功能简介
调用最新评论的文章列表,其功能类似于展示网站的“热评文章”。它与直接调用评论列表不同,核心在于获取有最新评论的文章,并按照文章最近一条评论的时间进行降序排序。这有助于访客快速发现近期被讨论的热门内容,提升网站互动内容的可见性。最终展示效果通常是一个文章标题列表。
实现代码
以下PHP代码片段展示了如何在WordPress主题文件中实现此功能。请将代码放置在你希望显示列表的位置(例如侧边栏或文章底部)。
<?php
global $wpdb;
// 查询最近有评论的已发布文章ID
$pop = $wpdb->get_results(
"SELECT DISTINCT comment_post_ID
FROM $wpdb->comments
WHERE comment_approved = '1' // 仅显示已审核通过的评论
AND comment_post_ID NOT IN (
SELECT ID FROM $wpdb->posts
WHERE post_type != 'post' // 排除非“文章”类型
OR post_status != 'publish' // 排除未发布文章
OR post_password != '' // 排除有密码保护的文章
)
ORDER BY comment_date_gmt DESC // 按评论时间降序排序
LIMIT 10" // 限制显示10篇文章
);
?>
<?php if ($pop) : ?>
<ul>
<?php foreach ($pop as $post_item) : ?>
<?php $post_id = $post_item->comment_post_ID; ?>
<li>
<a href="<?php echo get_permalink($post_id); ?>">
<?php echo get_the_title($post_id); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php else : ?>
<p>暂无评论文章。</p>
<?php endif; ?>
代码说明与注意事项
- 核心逻辑:代码通过直接查询数据库,获取最近有通过审核评论的文章ID,然后循环输出文章标题和链接。
- 查询优化:使用
DISTINCT确保每篇文章只出现一次,并通过子查询排除了非公开文章、非“post”类型文章以及有密码保护的文章,保证了列表的准确性和安全性。 - 变量使用:修正了原代码中变量名
$post与WordPress全局变量可能冲突的问题,改为$post_item。 - 错误处理:增加了对查询结果是否为空的判断(
if ($pop)),避免在没有评论文章时输出空列表或报错。 - 链接属性:移除了原代码中不必要的
rel="external nofollow"属性,因为链接通常指向本站内容。 - 修改定制:你可以通过修改
LIMIT后的数字来控制显示的文章数量,或修改CSS来美化<ul>列表的样式。