实现 WordPress 侧边栏显示最新评论(含文章标题)
无需安装插件,通过添加自定义代码即可在 WordPress 侧边栏或其他位置显示最新评论列表,格式为“用户名:发表在《文章标题》”。
核心代码与说明
将以下代码添加到主题的 sidebar.php 文件(或任何你想显示评论列表的模板文件)中。代码会查询已通过审核的评论,并按时间倒序显示。
<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type, comment_author_url,
SUBSTRING(comment_content, 1, 30) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 9";
$comments = $wpdb->get_results($sql);
if ($comments) {
echo '<ul>';
foreach ($comments as $comment) {
$author = strip_tags($comment->comment_author);
$title = strip_tags($comment->post_title);
$permalink = get_permalink($comment->comment_post_ID);
$comment_link = $permalink . '#comment-' . $comment->comment_ID;
echo "<li><strong>{$author}</strong>: <a href='{$comment_link}' title='查看此评论'>发表在《{$title}》</a></li>";
}
echo '</ul>';
} else {
echo '<p>暂无评论。</p>';
}
?>
代码解析与自定义
- 显示数量:修改
LIMIT 9中的数字即可调整显示的评论条数。 - 查询条件:
comment_approved = '1'确保只显示已审核通过的评论;post_password = ''排除受密码保护的文章。 - 输出格式:代码已修正原文中的引号错误和链接构造逻辑,确保输出有效的 HTML 列表。
- 安全处理:使用
strip_tags()对用户名和文章标题进行过滤,防止 XSS 攻击。
进阶优化建议
- 创建小工具:如需更灵活的管理,可将此代码封装为一个简单的 WordPress 小工具(Widget)。
- 添加缓存:频繁的数据库查询可能影响性能,建议使用
wp_cache_set()和wp_cache_get()对查询结果进行缓存。 - 样式美化:输出的列表带有
<ul>和<li>标签,可通过主题的 CSS 文件自定义样式。
学习学习,必须的!谢谢!