本文主要讲的是可以根据评论的数量来控制是否显示评论者的链接。在这里,评论的数量必须按照邮箱来统计,所以最基本的思路就是按照邮箱来获取评论的数量,然后根据评论的数量来获取链接。虽然能达到效果,但是非常不科学,所以每个评论都会被查询一次,非常消耗性能,可能对个人博客影响不大,但是如果有更好的解决方法,最好不要用这种方法。
想法是把判断过程放在发表评论的时候,然后设置白名单。如果评论数量大于指定值,请将此电子邮件添加到白名单中。然后根据这个白名单,控制是否显示审核者的链接。这样,表现才是最好的。
简述代码,分为准备、判断、输出三个部分。代码可以添加到函数中。
第一部分
function fa_is_friend( $email = null , $num = 5 ){ //设置num来决定多少条评论之后可以显示地址
$count = get_comments(array(
'author_email' => $email,
'count' => true,
));
return ( $count > $num );
}
第二部分
function fa_update_friend_list( $comment_id ){
$comment = get_comment($comment_id);
$friend_list = get_option('friend_list') ? get_option('friend_list') : array();
$email = $comment->comment_author_email;
if ( fa_is_friend($email) && !in_array( $email , $friend_list) ) { //判断评论者是不是在白名单里面
$friend_list[] = $email;
update_option('friend_list',$friend_list); //如果不在白名单中并且符合要求,那么将其添加至白名单
}
}
add_action('comment_post', 'fa_update_friend_list');
第三部分
function fa_show_friend_link( $return , $author, $comment_ID ){
$comment = get_comment( $comment_ID );
$email = $comment->comment_author_email;
$friend_list = get_option('friend_list') ? get_option('friend_list') : array();
if ( in_array($email,$friend_list) ) {
return $return;
} else {
return $author;
}
}
add_filter('get_comment_author_link','fa_show_friend_link',10,3);
按照说法,整个代码都是基于_author_link()来输出审稿人的昵称,所以不是用这个方法输出的主题,只能自己修改。毕竟不是一件麻烦的事情,只需要在自己的输出中添加一个判断即可,也就是说,在自己的输出评论者的地址前添加一个判断,以确定评论者的邮箱是否在friend_list中。简而言之,只需将代码的第三部分转移到您的代码中。
同时,添加此代码后,所有以前的评论都不会显示评论链接,只有在审核者再次发送评论,并且评论数量达到标准后,所有以前的评论才会显示链接。