wordpress读者墙排除无gravatar头像

如题,以前就想折腾这个效果,问了N个wordpress控,回答都一致,无法判断。可能大家都不在乎这个,自从认识了小蝴蝶,觉得她是技术达人,那天一问,先是觉得不可行,接着说用css可以实现,但是css效果肯定不理想,于是昨天,小蝴蝶用代码实现了这个效果,小蝴蝶威武!

长话短说,主要是因为没有头像的读者上了排行版,那道墙看上去有点不尽人意,因为大部分没有头像而长期来评论的人都是来做广告的,本站最恨就是机器刷广告还带链接的,而如果是人工评论我不屏蔽,但不带链接就ok,因为有的人虽然是来做广告的,但是评论却都是一针见血,这样的宣传者欢迎吐槽,但是我的排行版考虑到美观,所以才会出此之策。

其实当初为了维护读者墙页面,我的读者墙是用代码输出全部留言用户,然后再复制到离线编辑器,删掉没有头像的,然后直接发布页面,这样做的优点就是不用查询数据库,防止一些刷评论的进入这个页面(那时把这个页面当做友情链接使用),还可以把没有头像的给排除掉,缺点就是无法及时更新非刷评论的读者,排行版更新得手动再次编辑,太麻烦了,哈哈。

在请教的过程中,phoetry就弄过一个检查评论者头像,无头像不能评论的功能,主要折腾的还是判断有无gravatar头像,但那段代码很明显用在读者墙是行不通的,好了,废话不多说,下面分享小蝴蝶折腾出来的方法!

首先function里加如下代码:

function no_gravatar($email) {
$emailaddress = md5($email);//xiaohudie.net
$url = 'http://www.gravatar.com/avatar/' . $emailaddress . '?d=404';//从gravatar处调用默认头像
$headers = @get_headers($url);
if (!preg_match("|200|", $headers[0])) {//进行匹配
$is_no_avatar = FALSE;//如果这个邮件地址没有生成默认头像,则判断为有头像用户
} else {
$is_no_avatar = TRUE;//反之则是没头像了
}
return $is_no_avatar;
}

然后到你的读者墙代码页,下面是我的读者墙代码:

<?php
$query="SELECT COUNT(comment_ID) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 124 MONTH ) AND user_id='0' AND comment_author_email != 'admin@example.com' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 20";
$wall = $wpdb->get_results($query); $maxNum = $wall[0]->cnt;
$i =1;
foreach ($wall as $comment)
if (no_gravatar($comment->comment_author_email)) {
{
$width = round(40 / ($maxNum / $comment->cnt),2);
if( $comment->comment_author_url )
$url = $comment->comment_author_url;
else $url="#";
$avatar = get_avatar( $comment->comment_author_email, $size = '36', $default = get_bloginfo('wpurl').'/avatar/default.jpg' );
$tmp = '<li><a rel="nofollow" target=_blank class="no-ce" href="'.$comment->comment_author_url.'" title="'.$comment->comment_author.':'.$comment->cnt.'条评论">'.$avatar.'</a></li>';
$output2 .= $tmp;
$i++;
if($i>10)//10改成你想要的数字
break;
}
}
$output3 = "<ul class=\"readers-list\">".$output2."</ul>";
echo $output3 ;
?>

效果如下:

allreaders

参考你自己的读者墙代码,把红色那几行代码粘贴到你的代码相应位置,OK,那些没头像的读者瞬间在排行版里消失了,如果不懂,可以去小蝴蝶那里看原文,并提出问题。


分类:网络博客 标签:,,,,,,

已经有48条评论!

 

Loading...
  1. 怎么可能不坐 什么都顾不上啦 赶紧飞过来~

    沙发!
  2. 好像这里漏掉了那个重要的function?

    板凳!
  3. WP博客有很多是讨论关于WP折腾的。能赚钱的博客多是教你如何用博客赚钱的博客。

    地板!
  4. 空白头像确实不好看 完美主义者啊

    4F
  5. 刚看前几条评论 本来说我就不凑热闹了 :lol: 看俩人聊的多好 不过看见下边还有两个哥们呢 我就来凑凑热闹吧 :twisted:

    5F
  6. 你举例的几个头像里面,我认识6个

    6F
  7. 不得不说虽然你博客经常改,但还改得挺好的。没有越改越差。

    7F
    • 这句话经典,很多时候为了新鲜感,改了主题,后来发现其实是多余的,有时候博客的确会越改越差,我个人感觉每次修改都好像长进点,不只是改了有新鲜感,的确是觉得这么改会比原来好点。

  8. 没有申请Gravatar头像的邮件大部分都是垃圾评论啊

    8F
  9. 早有这个想法,在你这里写出来了

    9F
  10. 我的头像倒还上榜了啊~经常折腾主题有时候会适得其反

    10F
  11. 真不错,小蝴蝶好人啊

    11F
  12. 这个可以有。我懒得折腾,虽然知道点,因为我的头像缓存就有判断:如果此人不是G用户 》统一调用一个default头像——和willin版本的生成对应的默认头像不同

    12F
  13. 因为有的人虽然是来做广告的,

    13F
  14. 小蝴蝶真是太厉害了!!技术强人。

    14F
  15. 我那个效果谁来帮我完善下啊。

    17F
  16. 假如我真的不想使用头像呢!

    18F
  17. 没有有头像的话 添加一个默认的头像就行了啊
    http://www.geelg.com/reader.html

    19F
  18. 这功能很多人需要呢。之前我还想了个解决办法,先用一段时间标记所有无头像评论都为垃圾评论,之后在用评论墙,无头像的应该就不会上榜了,哈哈。

    20F
  19. 不错,效果看起来比较好

    21F

怎么样?你也说一句吧!

gravatar

汗 色 悲 闭嘴 调皮 笑 惊 亲 雷 馋 晕 酷 奸 怒 狂 萌 吃 贪 囧 羞 哭