常阳时光

WordPress 限定显示评论者链接

嗯,折腾无止境。这个功能是,你可以根据评论数来控制是否显示留言者的链接。比如说只有当留言者的评论数大于等于 1024 的时候才显示链接,否则不显示。当然,1024 只是个传说,你可以根据实际修改。

原文:大发 - WordPress 限定显示评论者链接 - https://fatesinger.com/78892

实现原理

这里的评论数根据邮箱来统计,最基本的思路就是根据邮箱来获取评论数,然后根据评论数决定是否显示留言者链接。这样虽然能达到效果,但是非常不科学,因为每条评论都会去查询一次,非常耗费性能。

最终方法是:把判断过程放在评论发布的时候。留言者发布评论的时候,系统获取留言者评论数。如果评论数大于指定数值(比如 1024),则把这个留言者(邮箱)加入到白名单中。然后根据这个白名单来控制是否显示留言者的链接。

实现代码

function fa_is_friend( $email = null , $num = 5 ){
$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);

fa_is_friend 这个函数第二个变量 num 就是控制显示的数量,根据你的需要酌情处理。

注意:本方法仅适合使用 the_author_link() 来输出评论者昵称的主题。如果你使用了自定义拼接的 html,只需要再加个邮箱是否在白名单的判断即可。

添加了此功能代码,则之前所有的评论都显示评论链接,只有当留言者有了新的评论才会出发白名单的更新。

最后,如果你能用将此功能在你优秀的付费主题中,就去打赏大发一下吧!

老杨这里已经用上,来试试看。