Old

WordPress变态需求: 获取文章的评论人数

为什么我说是“变态需求”呢?因为折腾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
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25613

73 comments

  1. airoschou airoschou

    沙发了总算~
    评论人数以IP来计算的吗?

    沙发
  2. 林木木 林木木

    @airoschou
    应该是用户名~

  3. 万戈 万戈

    大叔,你具有码农的天份,别浪费了,做程序猿去吧 :mrgreen:

    板凳
  4. ......
  5. coach outlet coach outlet

    学习了 代码不错

    41楼
  6. 鼬

    请教博主高亮代码用的是什么插件,谢谢。

    42楼
  7. W3Cshare W3Cshare

    有什么方法可以获取当前文章id的最新评论显示在首页的每篇文章下面

    43楼
  8. 甜菜 甜菜

    已经用了,虽然觉得没什么用,摆在那里了...

    44楼

Leave a Reply