WordPress创建显示所有评论的页面

日期: 标签:WordPress教程 46 条留言
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
文章目录

应网友hongwang777的请求,他需要一个显示他的WordPress博客所有文章评论的页面,同时又想按照月份来显示。我翻阅了一下WordPress的文档,发现函数 get_comments()恰好可以解决这个问题,下面具体实现方法。

实现方法:

1、在当前主题目录下新建一个php文件,命名为commets-page.php,然后将page.php中的所有代码复制到commets-page.php中

2、删除commets-page.php开头的所有注释,即 /* 与 */ ,以及它们之间的所有内容

3、将第一个 <?php 改成

<?php
/*
Template Name: All comments
*/

4、将 the_content(); 改成以下代码:

/**
 * 名称: WordPress创建显示所有评论的页面
 * 作者:露兜
 * 博客:https://www.ludou.org/
 * 最后修改:2010年08月24日
 */

$comments = get_comments('$status=approve');
$start = '2010-05'; // 起始月份
$month = '2010-01';

foreach($comments as $comm) 
{
	$comments_month = date('Y-m', strtotime($comm->comment_date));

	if ($comments_month < $start) 
		break;

	if ($comments_month != $month)
		echo '<strong>' . $comments_month . '</strong><br />';
    
	echo '<a href="'. $comm->comment_author_url  .'" rel="nofollow">' . $comm->comment_author . '</a>: ' . $comm->comment_content . '   (' . $comm->comment_date . ') <br />';
	$month = date('Y-m', strtotime($comm->comment_date));
}

5、可能你的博客有上万条评论,但是全部显示可能比较麻烦,你可以将以上代码中的 $start = '2010-05'; // 起始月份 ,2010-05改成起始月份,则只显示2010-05之后发表的评论;如果你不想访客在这个页面中发布评论,可以将commets-page.php中类似代码 comments_template(.....); 删除, ..... 代表未知字符

6、进入WordPress管理后台 – 页面 – 创建页面,标题为所有评论(可以自己起名),内容不要填,右侧可以选择模板,选择 All comments 即可

7、评论列表页创建成功!

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜博客 https://www.ludou.org/wordpress-list-all-comments.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者,主业是淘宝店主,卖些工艺品,感兴趣可以到我的淘宝店看看(旺旺不提供技术咨询):西西弗sisyphe

46 条留言

点此留言
  1. 如风物语

    ludou高手,我这种菜鸟不敢乱改代码,前一个站改代码弄出一些莫一起秒的后遗症。

  2. 如风物语

    另感谢您在wp上对我的回复~

  3. only博客

    很实用的知识,学习了!

  4. 好东西分享

    支持一下,看来我也要好好学学PHP了

  5. 如风物语

    集中精力做一件事,人不需要什么都专长。

  6. 棺材中的尘埃

    这个有什么实际的用处吗?

    • Ludou

      @棺材中的尘埃 这个我不知道,去问问那位网友吧。也许他只是给我留言耍耍我而已,自上次留言就没有给我回复过。

      • 流金漩涡

        @Ludou 我已经折腾上了,不过想知道分页的话,应该怎么办

  7. WordPress啦

    谢谢楼主奉献,很好的文章,值得学习

  8. MK

    这个页面的没什么存在的意义。纯技术文章,拜读了……

  9. 感恩

    这个功能不错啊,晚上回家试试。

  10. hongwang777

    萬分感謝博主的付出!
    這個功能對於我的博客非常重要。因爲涉及到歷史的真實。所以評論同文章同等重要而有歷史價值。我代表所有珍重歷史的人們向博主表示感謝!

  11. winky

    试了一下,挺好的,功能都实现了,不过还是要调一下样式才行。。。谢了~

    • Ludou

      @winky 关于样式,有什么欠缺的地方吗?

      • winky

        @Ludou 我是想显示出来的评论能留言板那样显示出来(像风格,嵌套布局等),还要加上属于哪篇文章的链接。我看了你的代码,本来想自己加上属于哪篇日志的,不过发觉那个表里没有直接地显示文章链接字段,应该要再写个函数才能实现了。不知博主有没意愿一试?呵呵~

        • Ludou

          @winky 这样的样式只能使用者自己写了,这里只输出泛化的评论。

          如果你想同时显示文章标题链接等,你可以安装插件:
          wp-recentcomments

          调用它的函数wp_recentcomments()

          • winky

            @Ludou 嗯,感谢。我突然想到WP KIT CN插件里面的评论函数~呵呵

  12. Jiefeng

    超强,这个功能还是不错的,有人就是希望看看这个站点的所有评论。
    不知能否套在主循环中,实现分页功能。

  13. 阿福

    您好,謝謝您的教學,我成功的創建了一個「最近兩個月留言」的page,http://prattflora.com/mfastudy/?page_id=16926,但是裡面的link都不正確,不知是哪裡出了錯誤呢?對了,我尋找「顯示本站所有留言」的教學很久了,過去都是使用一個外掛叫做comment-status (由chweng寫的,搜尋關鍵字是Comments Status 計算評論總數),但自從升級之後,該外掛就無法使用了,不知您是否看得出來該外掛裡面哪裡出現錯誤了呢?要是能有人把這個外掛修好,我就要流淚了!

    • Ludou

      @阿福 我不知道什么link不正确。
      最近比较忙,暂时没空去研究插件哪里有错。

      • 阿福

        @Ludou hi, Ludou:我在對方的站上看到有網友說是Global那邊的問題,所以已經自己修改好了呢!還是謝謝您喔!

  14. feiyang

    这个很棒,我弄出来了,但其实我更想要 热门文章的一的排行列表页面

    看了很多,都没发实现的,很郁闷啊

    Ludou ,能帮解决一下吗?

    • Ludou

      @feiyang 不知道什么样的叫热门?

      评论最多:
      https://www.ludou.org/popular-posts-by-comment-count-sql-query-in-wordpress.html

      点击最多(WP-PostViews):
      <?php if (function_exists('get_most_viewed')): ?>
      <ul>
      <?php get_most_viewed(); ?>
      </ul>
      <?php endif; ?>

      • feiyang

        @Ludou 对 就是点击最多 的 已经调出来了,但我想放在单独页面 调100个怎么调出数量呢?

        • Ludou

          @feiyang https://www.ludou.org/wordpress-create-tags-page.html

          第4步、将<?php the_content(); ?> 改成:
          <?php if (function_exists('get_most_viewed')): ?>
          <ul>
          <?php get_most_viewed('post', 100); ?>
          </ul>
          <?php endif; ?>

          • feiyang

            @Ludou 谢谢你 Ludou 成功了!呵呵,你太帅了!

            在这里学到了很多东西啊.

            在弄个评论最多100排行也和不错哦.

          • feiyang

            @feiyang <?php if (function_exists('mdv_recent_comments')) { ?>
            <ul>
            <?php mdv_recent_comments('100'); ?>
            </ul>
            <?php } ?>

            一百个评论,我想调评论的内容为文章的标题,弄不出来.Ludou能不能指教一下.

          • Ludou

            @feiyang 没有这样的功能

  15. feiyang

    有,我已经调出来了。借用插件在页面调出来的.

    嘿嘿

  16. 倡萌

    感觉很不错,目前还不需要这样的功能,做一下记号,呵呵

  17. salld

    the_content(); 没有找到这个 那一大段代码不知道该加在哪儿……

    • Ludou

      @salld 如果你用的是较新的主题,可能在loop-page.php中,你可以讲该文件中的所有代码复制,并替换commets-page.php中的
      <?php get_template_part( 'loop', 'page' ); ?>

      你在commets-page.php中搜索get_template_part即可找到这段代码。

    • Ludou

      @salld 替换完之后,你查找the_content即可。

  18. Kelvin

    我想输出的所有评论样式与格式,用的是默认的模版,就好比调用出来的内容就直接输出你页面这个评论,这个怎么操作?
    谢谢

    • Ludou

      @Kelvin 使用函数comment_form:
      http://codex.wordpress.org/Function_Reference/comment_form

  19. Kelvin

    额,没看明白,能不能再提示的深点

    • Ludou

      @Kelvin 可以参考wordpress自带那几款主题的代码

  20. 大肥羊

    这个可以分页么?

  21. 凯凯

    请问博主 可以实现用二级域名做评论页面嘛?

  22. joffrey

    请问大神,WordPress评论表单中可以添加下拉框和复选框吗?

发表留言