edit icon4 2009年4月23日 icon2 分享 icon3 我要发表评论 已有 21 条评论

我跟亲爱的炫耀说,你看我有篇文章有40多条评论,她说了一句很打击的话,这里一半多都是你自己的回复吧(囧)。话虽然很打击不过这却是事实。这样虚高的评论数很容易满足自己的虚荣心,但却给别人一种夸张的,不真实的感觉。那么我们有没有办法让我们的WordPress显示真实的评论数即把管理员自己的评论数排除在外呢?

答案是可以的。这个方法我也是无意中透过搜索引擎找到的,本来找的是另一内容的,却被歪打正着的找到了这个让我们的WordPress显示真实的评论数的方法。好,废话不多说,如果你有兴趣那就请继续往下看吧。

首先要感谢Shawn,从他的BLOG看,这应该是一位CSS高手来的。这个方法正是从他BLOG里的一篇老文章里找到的,算是他的原创方法吧。这里我就当一位传播和发扬者好了。嗯,我们进入正题。

其实这个方法的原理就是定义一个新的评论计算函数,然后把模板里的评论计算函数替换成新定义的函数。嗯,现在我们正式开始。

首先在你模板的function.php里面加入这么一段新函数,注意不要切断原来的函数就好了。

//real number of comments
function no_admin_number($no='', $one='', $twomore='') {
global $wpdb, $tablecomments, $post;
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = '' AND comment_approved = '1' AND comment_author != '博主姓名'");
$cnt = count($comments);
if (!$cnt)
echo $no;
elseif ($cnt == 1)
echo $one;
else
echo str_replace("%", $cnt, $twomore);
}

注意把里面的“博主姓名”改成你的名字,然后保存。

然后把你的首页(index.php),评论页(comments.php),留言板页(如果有的话)里面原有的评论计数函数(大部分模板的都大同小异,比如我的是下面这个。)

<?php comments_number('目前还没有评论','目前有 1 条评论','目前有 % 条评论' );?>

替换成下面这个

<?php no_admin_number('目前还没有评论','目前有 1 条评论','目前有 % 条评论' );?>

基本上就好了,细节的部分自己修改一下哈。

最后提醒大家一点的就是,修改模板前切记备份!否则改错了,就……咳咳。还有我严重推荐先在本地修改测试(相信各位都在本地搭建了一个WP吧?),然后再上传到服务器端,确保万无一失。

嗯,第一次写这么技术流的文章,汗,实在不是我的风格。欢迎大家批评指正~~

再次感谢方法原创者Shawn,给一下原文的地址吧。


已经有 21 条评论 / {+}

  1. slyar

    我记得有插件来着的...

    +Reply

    简单修改模板就可以~插件不是说少用为妙么?

    我一直怀疑大S那些关于Wordpress文章素改写的~

    S本来就是个代码王……

    @epile 是我自己研究的好不好...

    @Slyar 为啥网上已经有那么多同类文章~你不Google一下呢?

    我不写他们能同类么。。。

  2. Jutoy

    我留一个评论,看看算数不?

    +Reply

  3. 粥小卜(女的)

    哈哈~ 除个二就好了~ (*^__^*) 嘻嘻……

    +Reply

    有时候我回两条,有时候我回一条,有时候我不回~所以还是直接改了计算函数吧。这个……小卜你不用强调性别了……

    我怕路过的人误会~~~

    恩,你以后还是不要加那个括号了……这会影响活跃童鞋的统计哦,目前小卜遥遥领先中呢……

    这样啊~ 那不加了

    恩,乖。


  4. Warning: copy(http://www.gravatar.com/avatar/13b8c63c66d33ea78fa6c83be40f1360?s=45&d=http://www.jutoy.net/wordpress/avatar/default.jpg&r=X) [
    function.copy]: failed to open stream: HTTP request failed! HTTP/1.1 404 File Not Found in /home/jutoy/domains/jutoy.net/public_html/wordpress/wp-content/themes/PinkBox/functions.php on line 48
    cherlin

    我一向不在自己文章的评论下回复,有事还是到别人的网站上留言比较好,因为发到邮箱里人家没必收得到,而且太多人家也会烦...

    +Reply

    呵呵,嗯,如果不需要邮件通知可以取消嘛~我觉得在文章里面回复这样更有一种互动的感觉~

  5. 短歌行

    虚高就虚高吧,自己看得舒服,嘻嘻

    +Reply

    嗯,自己看着是挺舒服的…就是感觉怪怪的……

    为啥怪吖?有童鞋留言就要有博主回复啊,这样才算是一起交流么,呵呵~

    可能是以前用免费BSP的时候看习惯了自己的回复不算作一条评论的缘故吧~哈


  6. Warning: copy(http://www.gravatar.com/avatar/571064f063b3858ea76aeed477d45d6d?s=45&d=http://www.jutoy.net/wordpress/avatar/default.jpg&r=X) [
    function.copy]: failed to open stream: HTTP request failed! HTTP/1.1 404 File Not Found in /home/jutoy/domains/jutoy.net/public_html/wordpress/wp-content/themes/PinkBox/functions.php on line 48
    April

    太学术了……
    飘走

    +Reply

    这个呃……一般女生是不会感兴趣的…

  7. phy

    谢谢了,WP原来的评论数函数只能echo不能return,参考了你的文章再自定义函数,搞定……

    +Reply

    嘿嘿不客气,方法不是我的原创,我只是消化了一下写点感想而已哈~


  8. Warning: copy(http://www.gravatar.com/avatar/b723619acf8f52de78569e7dbb31c0ff?s=45&d=http://www.jutoy.net/wordpress/avatar/default.jpg&r=X) [
    function.copy]: failed to open stream: HTTP request failed! HTTP/1.1 404 File Not Found in /home/jutoy/domains/jutoy.net/public_html/wordpress/wp-content/themes/PinkBox/functions.php on line 48
    John1137

    I want to say - thank you for this!

    +Reply

  9. 王光卫中文博客

    有没有显示评论楼数的插件呢?

    +Reply

    不需要插件呢

  10. 奈维摩尔

    正碰上了ajax不刷新的问题,刚好用这代码就解决了- -,原来调用评论数的代码好像没写对。。

    +Reply

  11. 夏影残雪

    看完留言才发现这是你的blog,囧……

    继续爬走找代码……

    +Reply

    囧,你在找啥~

  12. IM路人

    技术流,我喜欢

    +Reply

  13. 东子

    这正是我需要的,多谢!

    +Reply

我有话说..