博客 / WordPress/ WordPress调用最新评论的文章列表

WordPress调用最新评论的文章列表

WordPress调用最新评论的文章列表

功能简介

调用最新评论的文章列表,其功能类似于展示网站的“热评文章”。它与直接调用评论列表不同,核心在于获取有最新评论的文章,并按照文章最近一条评论的时间进行降序排序。这有助于访客快速发现近期被讨论的热门内容,提升网站互动内容的可见性。最终展示效果通常是一个文章标题列表。

实现代码

以下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>列表的样式。

发表评论

您的邮箱不会公开。必填项已用 * 标注。