WordPress 页面调用分类文章的方法

默认情况下 WordPress 的导航栏都是使用页面做为导航的,这些单一的页面可以很好的用于作者介绍、归档页面、链接等。但我们发现使用页面来展示文章列表并不太方便,我个人是比较倾向于用分类做为页面导航的,使用分类做为导航似乎更像是一个内容充实的网站。这就会用到一种折衷的方法:导航里面既有普通页面的显示效果,也有分类导航的显示效果。本文主要介绍如何使用 WordPress 页面调用某个分类下面的文章的方法。

1.首先需要创建一个特殊页面模板,直接复制主题中的 index.php 文件,把文件名修改为你想要的模板名字,如:adsense。

2.打开此文件,在代码最顶部增加如下代码:


这段代码是声明模板的名称,你要新建页面的时候,会在选择页面模板里面看到它,当然,名字你可以随便起。这样,就完成了一个特殊页面模板的制作。

3.接下来就要实现这个模板显示的是特定分类下的文章内容,通过搜索找到如下代码:


在这行代码的前面加上:


其中的 cat=1 你可以修改成你想要显示的分类的ID,ID你可以在Wordpress 后台管理中的分类目录下看到,将鼠标放上某个分类即会显示形如:

http://www.domain.com/wp-admin/categories.php?action=edit&cat_ID=6

的链接,后面的6就是这个分类的ID号。

4.最后创建一个新页面,比如 adsense 页面,在模板选择里面选择刚刚创建的 adsense 模板,然后发布,刷新首页点击进入此页面看看效果吧。

更新于2009年8月5日,解决 WordPress 页面调用分类文章后无法翻页的问题

有网友反映说使用上面的方法造成无法翻页的状况,症状为 WordPress 页面调用分类文章后,点击页面下方的翻页没有反应,但浏览器地址栏传递的参数已经发生改变了。出现此问题可参考下面的解决方法:

将上面提到过的代码:


替换为:

is_archive = true; $wp_query->is_home = false;
?>

其中limit=15为每页显示的文章数目,cat=1 为分类的 ID,经园子测试此方法可行,大家也可以试一下。

通过上面的简单四步实现了在 WordPress 页面调用分类里面文章的方法,这样我们就可以自由的将页面和导航有选择的做为网站的主导航,相信多数朋友会喜欢这种比较自由的结合方法,以此来打造更具人性化的博客。

导航上既显示分类文章,又显示页面列表的实现方法

另外有部分朋友需要在导航上既显示分类文章,又显示页面列表,同时可自定义显示哪个分类和页面,把不想显示的隐藏掉,可采用下面的方法来实现(注:此方法只针对使用了inove主题的朋友们):

找到你主题中的/templates/header.php文件,找到如下代码:


修改为:


这样的话在页面导航上就会把分类和页面都显示出来,下一步就是利用 exclude 函数隐藏不需要显示的页面,找到各对应分类和页面的ID(在后台管理中鼠标放上对应的分类就会显示ID号),把上面修改过的代码改为如下形式即可:


通过上面的方法就达到了我们预期的效果:导航里面既有普通页面,也有分类导航,同时可自定义哪个分类和页面不显示。

——注:以下内容更新于2010年6月5日——

实现 WordPress 页面调用分类文章后文章不截断输出的解决方法

其实有很多博友在博客中留言提到过这种问题,如:懒蚂蚁wooecsameasy等,普遍反映说是在实现了 WordPress 页面调用分类文章后文章的效果后,以前截断显示的文章现在被全文显示了。

其实这个问题园子以前好像也遇到过,解决的方法是尝试换一些截断的插件来配合实现。你可以试试。

我现在的方法是用本文中提到的“导航上既显示分类文章,又显示页面列表的实现方法”中的思路,在导航上既调用了分类目录,又显示了页面列表。然后在写每一篇文章的时候手动插入的 more 标签来实现的截断输出的,这种方法感觉非常人性化。想从哪里面截断就插入哪里即可。不像一些插件存在只能截取字数,而不能分段、识别超链接等 BUG。

你只需要在需要截断的地方手工插入以下代码即可完美解决:


WordPress 页面调用分类文章的方法》上有112条评论

  1. Boolfish

    你好,请问一下,我现在有两个wp模板,模板一做主页,然后模板二做主页的一个子目录(/blog)做为博客,我想请教的是,如果在模板二下调用模板一的分类来做导航栏,谢谢!可以的话,麻烦你写一个email回复一下,感谢!

  2. 稠粥稀粥

    如果使用的是固定链接,该怎么办呢?
    如果是固定链接,在新建页面时会让输入固定链接地址,该输入什么呢?
    比如我的分类目录地址为“http://localhost/CZXZ/category/tech”,index文件该如何改呢?
    我看贵网站也是采用的固定链接,那“页面调用分类文章”该如何实现呢?比如你CSS类的文章的地址都是“http://www.yzznl.cn/category/css”,那如何把相关文章都放入CSS分类文章下呢?
    新手,比较笨。谢谢! 😛

    1. 园子 文章作者

      @稠粥稀粥
      我现在是这样解决的,直接在导航上调用页面和分类,方法只是针对mg12的几个主题
      也就是改下header.php中的代码就行了。
      方法文章中提供有的。你找找。

        1. 园子 文章作者

          @稠粥稀粥
          文章链接:http://www.yzznl.cn/archives/285.html
          文章中有:导航上既显示分类文章,又显示页面列表的实现方法
          方法是针对inove主题的,你的主题你需要自己去研究下代码,方法是一样的。

  3. Bryan

    “其实有很多博友在博客中留言提到过这种问题,如:懒蚂蚁、wooec、sameasy等,普遍反映说是在实现了 WordPress 页面调用分类文章后文章的效果后,以前截断显示的文章现在被全文显示了。”

    这个问题我也遇上了~~我写博文的时候已经加上…more>..的了,但是最后还是都显示出来了~~求解~~谢谢!
    你的博客的东西真实用,很喜欢! 😀

  4. 懒蚂蚁

    非常感谢园子的指导,可是我写文章一直是有加 more 标签的,我想在自己网站主页建个音乐的分页面来链接自己音乐分类下的所有文章,可是就是在音乐分页上的文章全是全文显示。
    本人是个新手,但在努力学习,请再指导下我,谢谢!

  5. wooec

    像你这样设置了之后我的页面的确是调用了分类里的文章,但是一个新的问题,就是这些页面中的文章显示是所有该分类下的内容,而不是向主页那样,显示文章的前一段,并且主题还有链接和文章的一些日期等其它信息。要是改成像楼主那样的页面是不是还要完成后面的几步?请指教

    1. 园子 文章作者

      @wooec
      显示前一段你可以用一些截断插件来实现,至于我后面提到的方法,只是针对inove主题实践过,其它主题需要你自己摸索了。

  6. sameasy

    你好,我也是用了这个方法,在页面里调用了分类文章,调用是成功了,但遇到了一个问题。原分类显示的时候,标签是可以正常工作的,但在页面调用过来的分类文章,却全是全文显示的,那个标签不能工作,请问这个问题知道该怎么处理吗

  7. 夏雪天

    园子,我又来膜拜了。。。
    那个方法不行啊,你的那个方法只是针对导航栏的更改

    而我现在想达到的效果是在某个页面显示一个分类的所有文章摘要,而不是全文。

    比如你导航栏的WordPress按钮,点击它之后出来的页面,显示的是分类为WordPress的所有文章的摘要,而不是全文。

    等您解答~!

  8. 夏雪天

    嘿园子你好,看了你的这个文章学了不少知识,也解决了我的燃眉之急
    但是,现在碰到了一个问题,就是我在导航上增加了分类页面之后
    首页里显示的文章是加了MORE的,但是在具体的分类页里面,就读不出这个more

    您可以点我的地址回去看一下,首页和生活,同样的文章,一个摘要,一个全文

    求解决方法,我的邮箱是xuetian_xy@163.com。。。msn xuetian_xy@msn.cn

    感谢

    1. 园子 文章作者

      @夏雪天
      文章中有方法是关于“解决 WordPress 页面调用分类文章后无法翻页的问题”
      应该可以解决,我最后的方法是直接把分类和页面同时写到导航里,然后用exclude函数隐藏掉不想显示的分类或页面就行了~

  9. 聪壹艮

    谢谢博主分享了,问题解决了, 还有个事想问下博主,就是怎么让两个友情链接表 分 左右显示 且不重复啊? 我设置了半天弄不好,请高手指教….

  10. dblo

    园子,问你下index.php文件是那里的文件呢?我找遍了wp-content/themes下的所有index文件,结果都搜不到,所以不知道是哪儿出问题了,告诉我好吗?我邮箱zhimin07@163.com

  11. tianyu

    你好,你的方法很管用,但是我把固定链接由默认改为日期和文章名字之后,页面就无法正常调用了,不知道问题出在哪里

  12. Pingback引用通告: Wordpress 自定义页面和相关资源 | 潜龙勿用 厚积薄发 | SXLee

  13. Pingback引用通告: SCK space » theme finalised

  14. Pingback引用通告: 制作分类页面和留言本 | 爱生活 i L i J i .com

  15. 曾庆华

    好,你的教程刚好是我要找的!我也按这个方法自己建了一个“我的感赏&幸福清单”的页面调用!感谢!
    还有一个问题: 要怎么样才可以将一分类下的文章全部是放到这个页面下,而在默认的“Blog”页面里没有这个分类的博文!谢谢!!!

  16. 斯比瑞特

    @园子
    不好意思,我想请教你的回复样式的实现。读者的留言头像和名字显示左边,而你的回复头像和名字显示在右边,然后还有带箭头的“对话框”的感觉,呵呵我不懂css和php,请问复杂吗?

    1. 园子 文章作者

      @斯比瑞特
      你没听懂我的意思,这种功能是我用inove主题后默认就有的
      应该是 Quick Comments 插件实现的
      我并没有改动任何代码,呵呵。
      @goldapple
      我试用了三天吧,也是感觉有些慢慢的
      就暂时停用了

    1. 园子 文章作者

      @斯比瑞特
      评论框背景比较简单,教程就不写了,你做个背景就行了。下面是CSS代码:

      #comment {
          background:#FFF url(img/comment_bg.gif) no-repeat scroll center center;
          border:1px solid #A6A6A6;
          padding:2px 1px;
          font-size:12px;
      }
      

      @歪豆
      呵呵,确实是。IE6不可否认仍然是主流。

  17. 斯比瑞特

    @园子
    谢谢,这回行了,但很奇怪,我的模版原来上面有翻页链接,现在没有了,只有下面有了,不过可以翻页了!呵呵!
    另外请教我用这个Advanced Category Excluder插件,把不想显示在首页的分类隐藏掉,但有个小问题,就是侧栏里的最新文章也不会显示那个分类里更新的文章了,有没办法在首页内容里不显示该分类文章,但在侧边栏的最新文章和最新评论里显示那些更新文章呢?不知道罗索清楚没有!!呵呵。

  18. 斯比瑞特

    @园子
    比如我按你的用了这条,但上面的翻页链接没有了,下面的翻页也不好使了,没法翻页了。是不是除了那条语句之外还要改点其他地方,还有用这archive.php个文件改是不是也可以??

  19. 歪豆

    有好看的WP模版没?我的博客很丑,想弄好看点,提高一下浏览体验。额~还有,怎么在WP中加入网站图标,就是在浏览器上方显示的那种。谢谢

发表评论