关于博友链接
抱歉各位,我换一种方式显示博友的链接,之前是单独一个页面显示,现在改为首页隐藏显示,点击★下划显示来留言过的所有访问者,并有相关链接,右上角是留言次数,自动记录,按留言时间顺序排列,原有页面的链接全部移至浏览器收藏夹并多端同步,会不定期浏览访问,嗯,如果您对我的这个操作介意的话,可以单方面删除我,愿博客和折腾继续,愿生活愉快,一切顺利。
2024年11月28日更新:
为了实现 仅显示最近6个月内有新留言的访客,我们需要对代码进行一些修改,基于评论时间过滤出符合条件的评论者,并只显示最近6个月内有新留言的访客。这个逻辑是通过获取每个评论的时间,并与当前时间进行比较来实现的。
主要修改点:
- 计算6个月前的时间戳。
- 过滤掉6个月前没有新留言的访客。
- 显示符合条件的访客信息。
完整代码修改:
php
<?php
// 获取所有评论并按照评论ID排序
$comments = get_comments(array(
'number' => 99999, // 获取评论数量
'status' => 'approve', // 只获取已经被批准的留言
'order' => 'DESC', // 倒序排列
'author__not_in' => array(1), // 排除博主的ID,这里假设博主ID是1
));
// 用来存储不重复的评论者信息及留言次数
$unique_comments = array();
// 获取当前时间戳(秒级)
$current_time = current_time('timestamp');
// 定义6个月的时间戳(6个月 = 180天)
$six_months_ago = strtotime('-6 months', $current_time);
// 遍历评论
foreach ($comments as $comment) {
$email = $comment->comment_author_email;
$comment_date = strtotime($comment->comment_date); // 获取评论的时间戳
// 如果评论日期在6个月前,则跳过
if ($comment_date < $six_months_ago) {
continue;
}
// 如果没有记录该评论者的信息,则添加到数组中
if (!isset($unique_comments[$email])) {
$unique_comments[$email] = array(
'count' => 0,
'url' => $comment->comment_author_url,
'comment' => $comment,
'latest_comment_date' => $comment_date // 记录最新留言的时间
);
}
// 更新该评论者的最新留言时间
if ($comment_date > $unique_comments[$email]['latest_comment_date']) {
$unique_comments[$email]['latest_comment_date'] = $comment_date;
}
// 增加该邮箱的留言次数
$unique_comments[$email]['count']++;
}
// 显示每个评论者的名称和留言次数
foreach ($unique_comments as $email => $data) {
$count = $data['count'];
$comment = $data['comment'];
$comment_author_url = $data['url'];
$comment_author_name = esc_html($comment->comment_author); // 获取评论者名称并进行转义
$latest_comment_date = $data['latest_comment_date'];
// 判断该评论者是否超过6个月没有新留言
if ($latest_comment_date < $six_months_ago) {
// 如果该评论者的最新留言时间超过6个月,则不显示名字和链接
continue;
}
// 生成评论者名称和链接的代码
echo '<div style="position: relative; display: inline-block; margin-right: 20px; padding: 0;">';
if (!empty($comment_author_url)) {
echo '<a rel="nofollow" target="_blank" href="' . home_url() . "/goto?url=" . base64_encode($comment_author_url) . '">';
}
// 显示评论者的名称
echo '<span style="font-size: 1em; padding: 0 3px;">' . $comment_author_name . '</span>';
if (!empty($comment_author_url)) {
echo '</a>';
}
// 根据留言次数设置背景颜色和字体颜色
if ($count >= 50) {
// 背景为红色,字体为白色
echo '<span style="font-size: 0.7em; color: #fff; background: #f7828a; border-radius: 2px;">'
. esc_html($count) . '</span>';
} elseif ($count > 30) {
// 背景为绿色,字体为白色
echo '<span style="font-size: 0.7em; color: #fff; background: #90b47f; border-radius: 2px;">'
. esc_html($count) . '</span>';
} else {
// 默认样式
echo '<span style="font-size: 0.7em; color: #29d;">'
. esc_html($count) . '</span>';
}
echo '</div>';
}
?>
代码分析:
- 计算6个月前的时间戳:
- 使用
strtotime('-6 months', $current_time)
获取当前时间戳的6个月前的时间戳,用于后续判断。
- 使用
- 遍历评论并过滤:
- 在遍历所有评论时,通过
strtotime($comment->comment_date)
获取每条评论的时间戳,并与$six_months_ago
进行比较。 - 如果评论的时间戳早于6个月前,则跳过该评论(即不显示该评论者的名字和链接)。
- 在遍历所有评论时,通过
- 记录每个评论者的最新留言时间:
- 对于每个评论者,保留其最新的评论时间,并与后续的评论进行比较,确保只显示最近6个月内有留言的评论者。
- 判断评论者是否符合条件:
- 在显示评论者信息之前,检查评论者的最新留言时间,如果该时间早于6个月前,则跳过显示。
- 生成评论者的显示内容:
- 如果评论者符合条件,会显示评论者的名字、链接以及留言次数。留言次数的不同背景颜色根据条件设置:
- 50条及以上:红色背景
- 30条至50条:绿色背景
- 小于30条:默认字体蓝色
- 如果评论者符合条件,会显示评论者的名字、链接以及留言次数。留言次数的不同背景颜色根据条件设置:
真的是个省事的好办法
域名证书好像要更新了
没注意。。我检查一下
可以可以
感觉大家现在好像没前几年那么在意友链了,基本都是靠RSS了。
好像是的,现在流行rss,而我还是很原始,加入收藏夹,然后全部打开了浏览~
这样挺好,省去了一个页面,更加简洁啦,周末愉快啊
就是改着玩嘛😄😄,愉快~
自己地盘,自己说了算。
评论每次输信息这里解决不了吗?
试了好多次,就是没效果,我想这个跟浏览器设置为隐私浏览模式应该没关系,我去别人那边留言可以自动跳出信息,我这就不行,还得研究研究~
现在应该是改好了~~嗨,主题代码被我改的有点乱😄
厉害,这是搞了一个读者墙啊。这玩意挺方便,非常适合回访。
方便来访者点着互相访问
峰哥,博客圈论坛邀请你咯
好的段总,哈哈哈~~,我看看
链接不正确,要怎么进?
https://bbs.bokequan.cn/
邀请码:aiztxp
都行呢,哈哈哈