WordPress 不同页面不同评论分页功能

本篇文章是前两天写的《Wordpress 指定页面评论分页功能》的后续,之前纯粹为求助贴,在该文章的评论中得到众牛人、博友的顶力相助,终于解决了这个疑问,在此特别感谢阿邙任平生Willin 大师等人的提点。另外 BS 一下小蛋蛋兽兽,这个P孩居然知道也不告诉我,爆菊一个。

在几位仁兄的帮助下,现在已经实现了 WordPress 给指定页面评论分页的功能,本来想在前文的基础上 Update 一下,后来发现我唠叨的本事挺大,写着写着又吹出一整篇来,就索性单独成文,作为解惑篇谈谈 WordPress 给指定页面的评论分页实现的思路、原理、过程。

先回顾一下求助篇的上一篇文章,文中提到,因为每篇文章的评论数没有多到必须分页,而留言板页面因为评论总数过千又不得不分页,这就出现了一个矛盾的状况,日志评论不需要分页,而留言板需要分页,我疑惑了。之前我的思路一直傻傻地纠缠在如何判断是否分页的问题上,看了 wp_list_comments() 函数的官方文档一遍又一遍,楞是没找到相关的参数,浪费了我不少时间。

其实是我钻牛角尖了,换个思路就可以很简单地解决这一问题。阿邙任平生Willin 大师等技术神人不约而同地提到了 wp_list_comments() 函数的 per_page 参数,我恍然大悟,是啊,为什么一定要判断页面是否需要分页呢?可以让所有页面都分页,而只要在每页显示评论的数量上改动就行了嘛。有了这个思路和想法,解决起来也就没什么难度了。

1、把留言板页面的评论模板和日志页的评论模板分开。复制 comments.php 并另存为 guestcomments.php,打开 page.php 找到 <?php comments_template(' ', true); ?>,这里默认调用的是 comments.php,我们要让留言板的评论部分调用 guestcomments.php,则修改为 <?php comments_template('/guestcomments.php', true); ?>

2、修改 guestcomments.php 中 wp_list_comments() 函数的 per_page 参数,写法如下:

<?php wp_list_comments('type=comment&callback=mytheme_comment&per_page=20');?>

请注意其中的 per_page=20,就是指留言板每页显示20条评论。

3、在 WordPress 后台设置日志页面的评论分页。在“评论选项”中,勾选分页显示评论,并且每页显示999条评论。这个评论数可以设置的高一些,以确定单篇日志的评论数达不到这个数值,也就不会出现分页。或者你可以在 comments.php 中的 wp_list_comments() 函数加上 per_page=999,这也是一样的,这样一来,日志页和留言板的评论部分都不受后台设置控制了。

恩,就是这样,现在你可以看到的单篇日志的评论就不分页了,而留言板页面的评论是分页的。

PS1:感谢邙邙小盆友,特地为我写了解惑篇——《也谈Wordpress 指定页面分页功能》

PS2:感谢 Winy 小盆友,特地为我提供了一个全新的很帅的解决方案——《Wordpress评论非插件实现ajax翻页》

PS3:祝全世界的小盆友,端午节快乐,粽子吃多多~

  1. Pingback: wordpress新主题的一些优化细节 | 姜敏的博客

  2. 但是我想让留言板的留言显示顺序是倒序的,怎么弄? 就是优先显示最近的评论. 我知道后台可以调,但是我不想影响文章页的顺序

  3. Pingback: wordpress分页功能简介(无插件) | Ystar's blog

  4. 呆在这两篇文章里,研究了很久了。看懂了!
    我刚开始一直在想为什么会有评论分页,怎么去掉,后面才发现后台有设置的。

  5. Pingback: Wordpress「A9」Theme by Willin Kan | 阿邙’S Blog

  6. 看完之后觉得挺简单的,现在是不是会因为评论过多导致网页载入太慢,数据库查询次数增加,负荷过大呢?

  7. 万戈,你也太瞅不起诫色和尚我了…你觉得我会没有订阅吗?诫色和尚我是个很喜欢订阅博客的人呢…哎…说出这种话,诫色和尚我心寒啊…我到想问问万戈你订阅我博客没呢…让我觉得这话这么悲剧…

    • :arrow: ...你误会我了,因为你说挤进100嘛,我的意思是订阅小站可以更讯速的得到更新消息啦,抢占沙发也是有可能的嘛

  8. 学习了·昨天手机找一些东西·才发现自己没有把你的博客逛遍真是失误··不过马上考试了,考完了再来学习