我的WordPress主题这样做(4)-专属分类页面制作

在本系列的上一篇文章中,我们已经知道如何利用 Query Posts 功能对网站首页文章进行有效控制。当你把某些分类文章从首页显示中去除的同时,是否也希望能建立一个专门的页面显示那些被隐藏的分类文章呢?在本篇文章中我就此进行简单的一些相关介绍。

其实原理很简单,当你利用query_posts("cat=-3&showposts=5")这样的代码去除分类3的文章时,你也可以利用query_posts("cat=3&showposts=5")这代码只显示分类3的文章。所以,我们新建一个页面模板,譬如命名为your-special-page.php。利用文本编辑器编辑该文件,在其开头加上:

<?php
/*
Template Name: Your special Page
*/
?>

如果你想简单点的话,就在上面代码后直接把index.php内的文件内容复制进去,但要注意,我们需要在下面这一句:

<?php while ( have_posts() ) : the_post() ?>

的前面增加如下代码:

<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=3&showposts=' . $limit=5 . '&paged=' . $paged);
$wp_query->is_archive = true; $wp_query->is_home = false;
?>

这样,我们就能让其只显示分类ID为3的文章内容。(具体的操作说明请参照本系列的上一篇文章

接着我们把这个your-special-page.php文件上传到WordPress主题模板目录内。然后我们在后台新建一个页面,名称自定,内容为空,但必需注意在页面模板一栏选择“Your special Page”,然后选择发布,你便能实现在该页面显示自己选定的分类文章。

另外在这里顺带补充一下对文章内容显示控制的几点:

1. 如果你已经在首页中隐藏了某些分类的文章,同时你也想在WordPress的分类列表中隐藏那些分类,可以用<?php wp_list_categories('exclude=4,7'); ?>这个调用代码,例子中的是在分类列表中去除ID为4和7的分类;

2. 如果再进一步,你想在你的feed中去除那些隐藏的分类文章。这里有一个简单的办法,就是在主题目录下的functions.php中添加如下代码:

function my_cat_exclude($query) {
if ($query->is_feed) {
$query->set('cat','-20,-21,-22');
}
return $query;
}
add_filter('pre_get_posts','my_cat_exclude');

最后,我想这种WordPress的分类显示方式大家应该已经能了解并能按自己的意思设计自己的主题,如在我的网站内,按照这个办法我创建了关于自己生活牢骚的这个页面,还有相当于相册功能的这个页面。

P.S. 写到这里,其实已经是对WordPress进行CMS的功能定制介绍了。我在这里推荐大家再看看sofish的告诉你如何做一个CMS型Wordpress主题专题文章,还有香水的免插件修改模板制作相册教程,都很不错的。

分类:theme skill, WordPress;标签:, , , ;收藏本文的永久链接

24 Responses to “我的WordPress主题这样做(4)-专属分类页面制作”

  1. 贝壳 回复此留言 2008/08/13 14:39 #comment-2683

    这个方法我觉得略嫌麻烦·这个功能是否有插件可以支持啊?

  2. Jinwen 回复此留言 2008/08/13 16:43 #comment-2682

    @贝壳:不用插件不是更好吗?

  3. 贝壳 回复此留言 2008/08/14 11:23 #comment-2681

    有个小问题哦,希望解答,我在新建页面的时候怎么选择页面模板啊~我并没有看见这个选项啊?我用的WP2.6,是不是就是那个“自定义字段”?里面有个键和键值要填啊~

  4. Jinwen 回复此留言 2008/08/14 18:11 #comment-2680

    @贝壳: 不是自定义字段那里,而是在其下面的,倒数第二个,你是不是没有将其展开?一般会有的啊。

  5. shamas 回复此留言 2008/09/19 09:06 #comment-2690

    我做了个专属页面,加不了评论框了,是不是不能加.http://3284265.cn/book

  6. Jinwen 回复此留言 2008/09/19 10:07 #comment-2691

    @shamas: 不会的。我想是你的页面模板内没有插入评论模板,需要增加< ?php comments_template(); ?>这个代码。

  7. Toni 回复此留言 2008/10/20 19:00 #comment-2684

    学习了

  8. winlon 回复此留言 2008/11/23 09:15 #comment-2688

    弄了好久 都无法实现!cat=29 但是29的分类 在 页面上显示不出来 代码哪里有问题 哎 能不能 我把 index.php 发给你 你帮我弄个模板 发给我???

  9. winlon 回复此留言 2008/11/23 10:05 #comment-2685

    JinWen 加我下QQ 好不好 我感觉就是有点小错误 显示不出文章来 我截个图给你看 我Q 66696435

  10. winlon 回复此留言 2008/11/23 10:10 #comment-2687

    邮件已发送!

  11. winlon 回复此留言 2008/11/23 11:59 #comment-2689

    邮件中的附件收到 好用 果然很神奇!谢谢了 limit=10 这个10 是代表 页面可显示10篇文章么?

  12. Jinwen 回复此留言 2008/11/23 09:53 #comment-2686

    @winlon: 你确认分类的数字没有弄错?那你把文件发给我吧,我看看。这两天比较忙,可能要迟点才能帮你改。我的邮箱:smartrcn[at]gmail.com

  13. winlon 回复此留言 2008/11/29 13:16 #comment-3330

    专题分类页面 more代码无效!
    我的主页可以用more代码不显示日志全文的
    但是依据主页代码制作的这个专属页面下more代码无效 必须显示全文 这是怎么回事呢/

  14. winlon 回复此留言 2008/11/29 15:04 #comment-3333

    @Jinwen: 如何改成显示摘要形式呢!我的默认是全文显示

  15. winlon 回复此留言 2008/11/29 16:35 #comment-3334

    我再问一个新问题 为什么我发某些文章的时候 侧栏就会被挤到下面去 很不美观 比如:
    http://www.benbenmi.com.cn/?page_id=24

  16. Jinwen 回复此留言 2008/11/29 13:20 #comment-3331

    @winlon: 换成显示摘要形式不行吗?你说的这个问题我还没有想过呢,因我很少用more标签的。

  17. Jinwen 回复此留言 2008/11/29 23:33 #comment-3338

    @winlon: 你留的页面我没看出侧栏下沉啊,是已经修理好了?显示摘要的代码在这篇文章中的代码就是了,分别说的是两种方法,你可以试试的。

  18. 整野 回复此留言 2008/12/20 13:15 #comment-3772

    @贝壳: 你是否修改过默认主题?或者升级之后出现这个问题?我也遇到这个问题了,我的解决办法是:1.登录你的ftp到服务器,把原默认主题(不是当前主题哦)删除.2.到官方下载wp2.7,然后把新下载的wp2.7的文件目录里的默认模板上传到你的主题目录下面.3.登录后台之后你会发现已经启用默认模板了,然后再选一次你的当前主题.这样就正常了.这个问题是由于升级或者修改默认模板造成的~希望对你有用~

  19. Alan 回复此留言 2008/12/20 19:28 #comment-3782

    我用了文章中的办法来控制首页文章的显示,但是分页插件不能用了 我现在一看完书就来研究这个东西·~ 也不知道是哪出了问题,希望能得到你的帮助~~~~~谢谢

  20. Jinwen 回复此留言 2008/12/20 23:36 #comment-3786

    @Alan: 方法是肯定可以分页的。你用的是哪个插件?要不先换成自带的分页代码试试?

  21. Alan 回复此留言 2008/12/23 16:37 #comment-3852

    弄好了~~ 前一天晚上不知道wordpress哪抽风了,第二天起来自己就好了

  22. 阿喀琉斯 回复此留言 2009/01/09 18:46 #comment-4039

    @Jinwen: 分类页面的more标签的确无效。如何更改为显示摘要方式呢?谢谢、

  23. Jinwen 回复此留言 2009/01/10 00:31 #comment-4040

    @阿喀琉斯: 关于摘要,你可以参考一下这篇文章中提到的方法。