WordPress 根据最后一次评论时间控制是否显示评论者链接,关于对评论者链接输出控制,目前在用:WordPress 博客外链跳转内链代码。之前还参考大发文章,折腾过通过评论数量来限制是否输出显示评论者网址,后来取消掉。
今天折腾这个代码来自:龙笑天下 - WordPress根据评论者最后一次评论时间来决定是否显示评论者链接
原文代码:
function theme_show_comment_author_link( $return , $author, $comment_ID ){
if ( !is_user_logged_in() ) { // 登录用户例外
date_default_timezone_set('PRC'); //时区
$limit_days = 10; //天数,最后一次评论时间距离今天超过 limit_days 天则隐藏评论链接
$comment = get_comment( $comment_ID );
if ( !empty($comment->comment_author_email) ) {
$last_comment = get_comments(array(
'author_email' => $comment->comment_author_email,
'number' => '1',
'orderby' => 'comment_date',
'order' => 'DESC',
'status' => 'approve',
'type' => 'comment'
));
if ( (time() - strtotime($last_comment['0']->comment_date)) > $limit_days*24*3600 ) {
$return = $author;
}
}else{
$return = $author;
}
}
return $return;
}
add_filter('get_comment_author_link','theme_show_comment_author_link', 10, 3);
此代码仅适合使用 the_author_link() 函数来输出评论者名称/链接。
下面是自用渣渣代码:
// 评论链接跳转内链
function commentauthor($comment_ID = 0) {
$comment_temp = get_comment( $comment_ID );
$author = $comment_temp->comment_author;
$url = $comment_temp->comment_author_url ;
$email = $comment_temp->comment_author_email;
$cmuserid = $comment_temp->user_id;
$limit_days = 30; // 天数,最后一次评论时间距离今天超过 $limit_days 天则隐藏评论链接
if ( $cmuserid > 0 ) {
echo "<a href='$url' rel='me' target='_blank' class='url'>$author</a>";
} else if ( empty( $url ) || 'http://' == $url ) {
echo $author;
} else if ( !empty( $email ) && !is_user_logged_in() ) {
date_default_timezone_set('PRC'); //时区
$last_comment = get_comments(array(
'author_email' => $email,
'number' => '1',
'orderby' => 'comment_date',
'order' => 'DESC',
'status' => 'approve',
'type' => 'comment'
));
if ( ( current_time('timestamp') - strtotime( $last_comment['0']->comment_date ) ) > $limit_days*24*3600 ) {
echo "<a href='javascript:;' title='".$url."' class='url'>$author</a>";
} else {
echo "<a href='".home_url()."/go/".base64_encode($url)."' rel='external nofollow noopener' title='".$url."' target='_blank' class='url'>$author</a>";
}
} else {
echo "<a href='".home_url()."/go/".base64_encode($url)."' rel='external nofollow noopener' target='_blank' title='".$url."' class='url'>$author</a>";
}
}
需配合主题修改。
温馨提示:每条评论都需要额外查询,评论多的页面可能会比较耗资源。(此功能暂时撤掉)
不显示链接会少很多评论。
@奶爸de笔记 额,会有点影响吧。每条评论都要查询,评论多的页面比较耗资源,暂时撤掉了。
狂赞 你这优化的非常全面~
@龙笑天 每条评论都要查询,貌似比较耗资源……
@老头 性能和功能之间权衡了~~
@龙笑天 也是,不过应该可以加缓存优化,暂时不折腾。
@龙笑天 话说你叫龙行天下好像更容易记住。
好像没太大的必要吧,尽管功能很细
@灰狼 确实没有太大必要,链接已经跳转处理过……不过要是能再优化一下,加上也挺好?
@灰狼 很好的功能哦,就看你的啦。
喜欢一直显示链接,不折腾了……
@山野愚人居 嗯,其实没太大必要……
哪位大神能改成typecho的么?改了的话记得通知我一下哦,谢谢啦。
@心灵博客 基本上没折腾过 TP,楼上楼上 @老狼 是 TP 大神。
不错吖,这想法看起来很有趣~
@崔先森 别人的想法,不过目前的方法有点耗资源……
留言者都是客人,倒是可以折腾一下留言的IP总数,这个没人折腾过。
@郑永 好吧,不折腾……
折腾不止
@masy 额,心血来潮才会折腾,最近都懒得动……
其实我感觉不显示链接还能在评论,那是真爱。
@James 说的是。
留着备用~~~
@老俍 其实也没什么用……
确实用不上,看看代码学习一下思路也不错嘛
@sys 用的话需要优化一下……
这个是知更鸟的主题么 感觉 改变了很多
@四大名著 基本上改完了……实际上已经不是 begin 了。
老头,咨询一下。最近Google AdSense需要在网站根目录上添加ads.txt文件才能投放广告,托管的wordpress怎么解决这个问题啊?
@justrun 没办法 ftp 上传文件?上传不了就无解吧?