为什么我说是“变态需求”呢?因为折腾WP主题这么久,我从来没接触过/听说过有人需要获取文章的评论人数,对,评论人数!不是评论数,同一个人发1条、10条、100条评论也只能算1人。
既然没人需要或者很少人需要,那么就难于找到相关方法了,我也查看过WordPress相关函数,木有这类直接的输出或者简单就能获取“评论人数”的方法/函数。
肿么办?先偷懒,于是我问 qiqiboy,万戈有木有折腾过这类需求,有没有方法,得到答案是:没听说过也没折腾过……qiqibly说可以用SQL解决,但我不怎么会SQL啊……
好吧,我在问以前就想到一个比较蛋疼的方法,只是想偷懒没去测试……这下没办法了,只能自己YY折腾了。
经过一番测试,搞定,代码如下:扔到主题的 functions.php 文件里面
(牢骚 - 代码懒得高亮了,以后也想把所有代码高亮去掉,主要是我用的是直接html方法……)
/* 获取文章的评论人数 by zwwooooo | zww.me */
function zfunc_comments_users($postid=0,$which=0) {
$comments = get_comments('status=approve&type=comment&post_id='.$postid); //获取文章的所有评论
if ($comments) {
$i=0; $j=0; $commentusers=array();
foreach ($comments as $comment) {
++$i;
if ($i==1) { $commentusers[] = $comment->comment_author_email; ++$j; }
if ( !in_array($comment->comment_author_email, $commentusers) ) {
$commentusers[] = $comment->comment_author_email;
++$j;
}
}
$output = array($j,$i);
$which = ($which == 0) ? 0 : 1;
return $output[$which]; //返回评论人数
}
return 0; //没有评论返回0
}
调用方法:
<?php echo zfunc_comments_users($postid); ?>
参数说明:$postid 是需要获取评论人数的文章ID
一般用法:在一般主题的loop里面可以这样用:
<?php echo zfunc_comments_users($post->ID); ?>
PS:还可以输出评论总数,用法:
<?php echo zfunc_comments_users($postid, 1); ?>
折腾玩(完)。
zww
赏
oooo
or
- 本文标题:WordPress变态需求: 获取文章的评论人数
- 本文链接:https://zww.me/archives/25613
- 发布时间:2012年04月05日 17:34
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
沙发了总算~
评论人数以IP来计算的吗?
@airoschou
应该是用户名~
@airoschou
肯定不是,按评论者昵称,如果要更准确点可以用评论者邮箱。
@林木木
其实邮箱好像比较好。
@zwwooooo
恩,有道理~
大叔,你具有码农的天份,别浪费了,做程序猿去吧
@万戈
好吧,我刚出来的确是二级程序猿,然后被环境影响“不务正业”打回原形。
我觉得还是看有高亮的比较舒服吧。。没有高亮的总觉得有点回到windows的记事板时代…
@deef
反正很少人直接在文章中读代码,好吧,我觉得烦,需要的自己copy到文本编辑器去
这个需求还真是头一次听说呢。
有插件吗
这个强悍了,兄弟,你确实厉害,真该去做程序猿
@阳光与风
程序员好吃么?
嗯,学习了,真不错。
果然是蛋疼的要求。。话说你的评论框怎么可以悬浮在页面啊。。好神奇。
@Normal
jQuery实现玩玩
这个需求真的很蛋疼,不过zww兄是真心厉害
@schiy
蛋疼的厉害
有个叫WP Mass Mailer的插件,能给博客历史上所有评论者群发邮件,里边应该有类似的功能~
@不能吧
这插件应该用的是sql实现的。
其实关于代码高亮,最舒服的办法就是给WP弄一个Stackoverflow那样的编辑器;或者干脆去玩Octopress……
@coolcfan
其实一般人就copy去尝试,博客直接读代码的人其实不多
没有必要这样,看我的实现方法吧,简单得多。
http://messense.me/wp-comment-user-count.html
@乱了感觉
我文中说了,尽量不用sql直接实现。
@zwwooooo
可是不知道这样写和用sql那个效率高?
@norion
sql如果写的好,当然是效率最高的……
我承认这是个变态的东西
你可真会做人啊
围观大叔的代码
不算变态,这是个可以满足某些博主小闷骚心里的函数。
闷骚才需要的功能~
这样可以体现出一个真正牛X的博客。。
还可以让我这种聊天一样评论的博客原形毕露。。。
@Dick_Wu
我这种伪技术牛x不了
这也可以?不过还是简单些好
评论框悬浮在边栏,这个挺有趣的