WordPress根据评论数量来判断是否显示评论者链接

 2017年12月11日 16:28  14,327  21  打印本文  

最近在龙笑天下BanYuner看到了这个内容,个人觉得很有用,对于一些广告用户还是有一定的作用的,毕竟有些时候,我们精力有限,不可能随时关注站点的垃圾评论等等。

本文主要讲的是你可以根据评论数来控制是否显示评论者的链接。这里评论数肯定要根据邮箱来统计了,于是最基本的思路就是根据邮箱来获取评论数,然后再根据评论数获取链接,虽然能达到效果,但是非常不科学,这样每条评论都会去查询一次,非常耗费性能,对于个人博客来说可能影响不是很大,但是有更好的解决方案最好就不使用这个方法了。

思路就是把判断过程放在发布评论的时候,然后设置一个白名单,如果评论数大于指定数值,则把这个邮箱加入到白名单中。然后根据这个白名单来控制是否显示评论者的链接。这样就做到了性能最优。

简单说一下代码,代码分为三个部分,准备工作,判断部分,输出部分。代码都添加到functions.php中即可:

第一部分

  1. function fa_is_friend( $email = null , $num = 5 ){ //设置num来决定多少条评论之后可以显示地址
  2.     $count = get_comments(array(
  3.         'author_email' => $email,
  4.         'count' => true,
  5.     ));
  6.     return ( $count > $num );
  7. }

第二部分

  1. function fa_update_friend_list( $comment_id ){
  2.     $comment = get_comment($comment_id);
  3.     $friend_list = get_option('friend_list') ? get_option('friend_list') : array();
  4.     $email = $comment->comment_author_email;
  5.     if ( fa_is_friend($email) && !in_array( $email , $friend_list) ) { //判断评论者是不是在白名单里面
  6.         $friend_list[] = $email;
  7.         update_option('friend_list',$friend_list); //如果不在白名单中并且符合要求,那么将其添加至白名单
  8.     }
  9. }
  10. add_action('comment_post', 'fa_update_friend_list');

第三部分

  1. function fa_show_friend_link( $return , $author$comment_ID ){
  2.     $comment = get_comment( $comment_ID );
  3.     $email = $comment->comment_author_email;
  4.     $friend_list = get_option('friend_list') ? get_option('friend_list') : array();
  5.     if ( in_array($email,$friend_list) ) {
  6.         return $return;
  7.     } else {
  8.         return $author;
  9.     }
  10. }
  11. add_filter('get_comment_author_link','fa_show_friend_link',10,3);

根据原作者所说,整个代码都是基于the_author_link()来输出评论者昵称的,那么不是通过这个方法输出的主题,像九哥的主题,就只能自行修改了,毕竟也不是一个麻烦的事情,只需要在你自己的输出中加上相关判断就可以了,也就是说在你自己的输出评论者地址前面加上一个判断,判断这个评论者的email是不是在friend_list中即可。简而言之,就是将第三部分代码转接到你的代码中去即可。

同时,添加了此代码之后,之前所有的评论都将不显示评论链接,只有在评论者再次发出评论之后,且评论数量达标则以前所有的评论都会显示链接。

友情提示:本博已启用此功能,达到【书童】即可显示链接哦!小伙伴们赶紧来吐槽解锁自己的链接吧。

方法拓展:

相信很多博客网站都启用了通过评论数来确定游客等级的功能,其实上面的功能也可以通过游客等级这个思路来实现,具体的实现方法小伙伴们自己折腾吧。


感谢龙笑天下帅气小琦琦

weinxin
小算草微信公众号
扫一扫关注小算草微信公众号,打开微信简简单单即可查看小算草所有内容,更快捷更方便。
Mr Y

吐槽一下

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    • avatar wordpress百宝箱 来自天朝的朋友 谷歌浏览器 Windows 10 江苏省盐城市 电信 【小白】

      您好我的也是使用begin主题,但是贴上代码之后,当天评论者也无法链接。。。不知道是什么原因。。。

      • avatar 亦之博客 来自天朝的朋友 谷歌浏览器 Windows XP 江苏省苏州市 电信 【小白】

        不错,受用了。 :mrgreen:

        • avatar 小小参谋 来自天朝的朋友 谷歌浏览器  HUAWEI MT7-TL00 Build/HuaweiMT7-TL00 P1 6.0 河南省郑州市 联通 【书童】

          高科技,我是什么级别呀,哈哈

          • avatar 夏日博客 来自天朝的朋友 谷歌浏览器 Windows 7 北京市 联通 【小白】

            很实用的WP小功能。。

            • avatar 明月清风 来自天朝的朋友 QQ浏览器  Android 4.4.4 HUAWEI C8818 Build/HuaweiC8818 四川省成都市 QQ旋风离线服务器 【小白】

              来点zblog的吧!

              • avatar 九哥 站长 来自天朝的朋友 QQ浏览器 Windows XP

                谢谢,欢迎常来。

                • avatar 龙笑天 来自天朝的朋友 火狐浏览器 Windows 7 广东省深圳市 电信 【小白】

                  :grin: 开头和结尾都感谢了一下~~

                  • avatar 我爱动感单车网 来自天朝的朋友 谷歌浏览器 Windows XP 广西桂林市 电信 【小白】

                    方法和思路都不错!

                    • avatar 姜辰 火狐浏览器 Windows 10 美国 内华达州克拉克县麦斯齐特市Input Output Flood有限公司 【书童】

                      额,我还是喜欢一个月后链接消失的那个玩法。

                        • avatar 九哥 站长 来自天朝的朋友 谷歌浏览器 Windows Server 2003

                          @姜辰 你说的这功能没见过啊!我觉得我这个好?

                            • avatar 姜辰 火狐浏览器 Windows 10 美国 内华达州克拉克县麦斯齐特市Input Output Flood有限公司 【书童】

                              @九哥 参考本站,你找一个一月前的文章,然后点链接~= =后台回访正常哟~

                          • avatar Koolight 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省武汉市 联通 【进士】

                            这个功能牛了,是说看到你的评论版里面怎么有的没有链接。

                            • avatar 懿古今 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市 电信 【进士】

                              这个方法可以打击一部分发广告的评论,或者不认真填写或者胡乱填写评论邮箱的用户,挺好的。

                                • avatar 九哥 站长 来自天朝的朋友 谷歌浏览器 Windows Server 2003

                                  @懿古今 广告直接拉黑,引流直接删除;这个主要作用还是加强互访,多交流。