使用 WordPress 页面模板
[作者:冰山上的播客]
如果你曾经设计过模板,你可能遇到过这样的要求:
能让每个页面有不同的设计吗?
恩,如果你是用 page.php 来处理你所有页面的外观的话,答案肯定是“no”,但是如果你使用不同的页面模板,你当然可以使得每个页面的样子如你所望。
举个例子,比如你有个客户想他所有的页面除了传记(bio)页面之外都有侧边栏,在他的传记页面,他想内容的宽度能够扩展到侧边栏的位置。具体步骤如下:
- 在你的主题文件夹中创建一个新模板,命名为 bio.php (或者你喜欢的名字)
- 然后把 page.php 模板中的内容拷贝到 bio.php 文件中。
- 接着,找到模板文件中调用 sidebar 的地方,去掉或者注释它(如果不知道怎么做,看下我们的主题教程了)
- 你可能需要找到 content div 标签,并手动给它增加一个 width 样式来扩展宽度以便能够占满整个 container div 标签。
完成之后,到 bio.php 的最上面插入以下代码:
<?php /* Template Name: Bio */ ?>
当你完成添加代码之后,保存你的文件并上传到你服务器上的当前主题文件夹下。
现在是时候去使用 WordPress 管理界面让 bio 页面使用 Bio 页面模板,假如你不知道的话,这里是具体做法:
进入创建新页面,或者编辑 bio 页面(假如你已经创建了),在右边,你会看到一些不同的标题,如平路,页面状态,页面密码,上级页面,页面模板,页面缩略名,页面作者,页面顺序。点击页面模板的边上的加号,在下拉列表中找到 Bio,选择它并点击保存。
现在你的 bio 页面和你其他的页面使用不同的主题。
很明显,很多人使用该技巧,特别是那些把 WordPress 当作 CMS 而非博客来使用的客户。使用你的想像力,你可以用它创建出一些非常有创意性的东东。
WordPress 页面(Page)技巧
以下文字摘译自 WordPress 官方开发文档中 wp_list_pages 部分
显示页面列表
- <?php wp_list_pages(”); ?>
默认用法:
- $defaults = array(‘depth‘ => 0, ‘show_date‘ => ”,
- ‘date_format‘ => get_option(‘date_format‘),
- ‘child_of‘ => 0, ‘exclude‘ => ”,
- ‘title_li‘ => __(‘Pages‘), ‘echo‘ => 1,
- ‘authors‘ => ”,
- ‘sort_column‘ => ‘menu_order, post_title‘);
默认效果:
- 列出所有页面,不考虑层次
- 不显示创建日期
- 没有对子页面的限制
- 没有隐藏页面
- 页面列表表名叫做”Pages”
- 显示调用结果
- 对作者没有任何限制
- 排序:页面编号及页面标题
- 增序排列
- 页面以缩进形式展现
- 包括所有页面
- 没有特殊的key/meta值的限制
我们可以对这些参数进行设置,使页面列表成为想要的样子。
1.改变页面列表的标题:
- <ul>
- <?php
- wp_list_pages(‘title_li=myPages‘); ?>
- </ul>
2.包含或排除一些页面
- <ul>
- <?php
- wp_list_pages(‘exclude=5,6‘); ?>
- </ul>
这样pageid为5,6的页面将不被列出。
3.对页面进行排序
- <ul>
- <?php
- wp_list_pages(‘sort_column=post_date&show_date=created‘); ?>
- </ul>
sort_column指定了排序的字段。可选择menu_order,post_date等。若用show_date字段,show_date参数要进行设置。
WordPress的标签功能: 在模板里加入<?php wp23_related_posts(); ?> ,会显示同一标签下的文章。
控制 WordPress 的页面显示
1、怎么把特定页面从pages页面列表中隐藏?
登录后台在页面管理界面,找到你想隐藏的page的ID,譬如2、4等。然后在header或者其他页面找到wp_list_pages代码,修改成.
<?php wp_list_pages(’title_li=&depth=1&exclude=2,4′);?>
2、如何控制pages的排列顺序?
登入后台在页面管理界面,修改你想要排序的page页面,在右方点击Page Order,修改值为你想排的顺序。如此修改其他页面的Order值。然后在header或者其他页面找到wp_list_pages代码,修改成.
<?php wp_list_pages (’title_li=&depth=1& sort_column=menu_order’);?>
这样pages页面就会按照你的排序列表。
3、如何显示页面的子页面?
将上面代码中的&depth=1取消就可以了。这是用来限制子页面显示的。
在建立的page页面中显示指定分类的方法是:
首先建立一个pages的模板,保存为指定的文件名,然后在Wordpress后台建立一个page页面,选择刚才建立的模板,模板的内容如下,这样就搞定了。我也正在修改当中,慢慢来吧,慢慢发现Wordpress的更多的功能吧。
<?php
/*
Template Name: 分类 page
*/
?>
<?php get_header(); ?>
<div id=”content”>
<div class=”entry”>
<h2>标题</h2>
</div>
<?php
$lastposts = get_posts(’numberposts=5&category=171′);
foreach($lastposts as $post):setup_postdata($post);
?>
<div class=”entry”>
<div id=”post-<?php the_ID(); ?>”>
<h1 id=”PostTitle”><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link to <?php the_title(); ?>”><?php the_title(); ?></a></h1>
<div class=”the_post_the_content”>
<?php the_content(); ?>
</div>
<div class=”postmetadata”>Posted in <span class=”cty”><?php the_category(’, ‘) ?></span> | <?php edit_post_link(’Edit’, ”, ‘ | ‘); ?> <span class=”cmt”><?php comments_popup_link(’No Comments »’, ‘1 Comment »’, ‘% Comments »’); ?></span>
<span class=”cmt”>
<?php
if(function_exists(’the_views’))
{
the_views(’views’, true); }
?>
</span>
<span class=”time”>Time: <?php unset($previousday); printf(__(’%1$s – %2$s’), the_date(”, ”, ”, false), get_the_time()) ?></span>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
其中$lastposts = get_posts(’numberposts=5&category=171′);是可以设定参数的,numberposts=你想现实的日志 的数量,category是你想要现实日志的分类id,好啦,先写到这里,其他的我也正在琢磨当中,大家一起学习吧。
使用Wordpress的体会,最好使用linux的服务器,执行效率真的和windows下面差太多了。而且可以使用rewrite等功能,linux服务器可以把wordpress的各项功能发挥到极致。
这里把具体步骤记录一下:
①、在自己的模板下找到pagetemplate.XXXXXXXXX.php的文件,我的模板下有 pagetemplate.simpletagging.php,pagetemplate.tagcloud.php, pagetemplate.tagtabs.php,直接复制一个,注意修改头部名字,Template Name:links,格式和下面1,2,3行保持一致!
1: <?php
2: /*
3: Template Name: links
4: */
5: ?>
6: <?php
7: get_header();
8: ?>
9:
10: <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
11: <div class=“post” id=“post-<?php the_ID(); ?>”>
12: <h3 class=“storytitle”><a href=“<?php the_permalink() ?>” rel=“bookmark”><?php the_title(); ?></a></h3>
13:
14: <?php the_content(”); ?>
15: <?php get_links_list(); ?>
16:
17: </div>
18:
19: <?php endwhile; else: ?>
20: <p><?php _e(‘Sorry, no posts matched your criteria.’); ?></p>
21: <?php endif; ?>
22:
23: <?php posts_nav_link(‘ — ‘, __(‘« Older Posts’), __(‘Newer Posts »’)); ?>
24:
25: <?php get_footer(); ?>
②、如果希望links页面可以留言,那在上面18行添加:<?php comments_template(’links.php’); // Get wp-comments.php template ?>,这里如果使用默认评论的话,直接用:<?php comments_template(); ,不需要参数,links.php从single.php(独立文章页)复制,改文件名为links.php或者自己喜欢的名字
③、增加一个page,标题为“友情链接”或“links”,内容随便写自己想写的,例如“欢迎在此申请友情链接”等,“page template ”(也就是模板页)选择”links”,页面缩略名填“friendlinks”(可省略),搞定了~~~

还有3 条评论
不错,写得详细,想知道我怎么吧底部的文字修改一下。
很有用哦,谢谢了