WordPress调用热门文章的方法大全

在WordPress中调用热门文章是一个非常常见的需求,可以根据不同的“热门”标准(如阅读量、评论数、点赞等)来实现。

下面为您整理一份从简单到高级的“WordPress 调用热门文章方法大全”。

核心思路

实现热门文章调用主要有两种途径:

  1. 使用插件​:最简单快捷,功能丰富,适合非技术背景用户。
  2. 添加代码​:更轻量、更灵活,性能更好,适合有一定技术基础、希望减少插件依赖的用户。

方法一:使用插件(推荐新手和非开发者)

插件方式通常提供小工具(Widget)、短代码(Shortcode)和PHP函数等多种调用方式,非常方便。

1. WordPress Popular Posts

这是最著名、最专业的热门文章插件。

  • 评判标准​: primarily 基于页面浏览量(PV),可按总浏览量、近期浏览量(如最近7天)等筛选。
  • 主要功能​:
    • 高度可定制:可设置时间范围、文章类型、分类等。
    • 多种显示样式:缩略图、标题、摘要、浏览量等。
    • 数据缓存:有效降低数据库查询压力,提升性能。
    • 提供小工具、短代码和PHP函数。
  • 使用方法​:
    • 安装并激活插件后,进入 外观 > 小工具,将 “WordPress Popular Posts” 小工具拖到侧边栏或页脚等区域进行配置。
    • 使用短代码 [wpp]在文章或页面中插入。

2. Jetpack

如果你已经在使用Jetpack插件,它自带了一个“热门文章”功能。

  • 评判标准​: 基于Jetpack的WordPress.com站点统计数据进行排名。
  • 主要功能​:
    • 显示最近24小时、7天、30天或全部时间的热门文章。
    • 界面简洁,与WordPress.com数据同步。
  • 使用方法​:
    • 确保Jetpack已连接且“站点统计”功能开启。
    • 进入 外观 > 小工具,使用 “Top Posts & Pages” 小工具。

3. Post Views Counter

如果你只需要精确统计和显示文章浏览量,并基于此调用热门文章,这个插件是轻量级的选择。

  • 评判标准​: 纯基于文章浏览量。
  • 主要功能​:
    • 准确统计文章浏览量(可排除机器人访问)。
    • 提供小工具和短代码来显示热门文章列表。
  • 使用方法​: 类似以上插件,通过小工具或短代码调用。

方法二:手动添加代码(推荐开发者和追求性能的用户)

通过将代码添加到主题的 functions.php文件或使用Code Snippets插件来实现。这种方式不依赖额外插件,性能更优。

1. 基于文章浏览量(Post Views)查询

这是最常见的方式。前提是你要有记录文章浏览量的功能。

第一步:确保文章浏览量被记录

首先,你需要一段代码来记录每篇文章的浏览量。将以下代码添加到主题的 functions.php中:

// 函数:设置文章浏览量
function set_post_views($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if ($count == '') {
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    } else {
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

// 函数:获取文章浏览量
function get_post_views($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if ($count == '') {
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0";
    }
    return $count;
}

// 在单篇文章页面记录浏览量
// 注意:移除了重复的 remove_action 行
function track_post_views($post_id) {
    if (!is_single()) return;
    if (empty($post_id)) {
        global $post;
        $post_id = $post->ID;
    }
    set_post_views($post_id);
}
add_action('wp_head', 'track_post_views');

第二步:查询并显示热门文章

然后,在你想要显示热门文章的地方(如侧边栏的 sidebar.php或通过短代码),使用 WP_Query进行查询。

// 查询热门文章的PHP代码示例
$popular_posts_args = array(
    'post_type' => 'post', // 文章类型,可以是 'page' 或其他自定义类型
    'posts_per_page' => 5, // 显示数量
    'meta_key' => 'post_views_count', // 基于我们上面设置的元字段
    'orderby' => 'meta_value_num', // 按数字值排序
    'order' => 'DESC', // 降序排列,浏览量从高到低
    'ignore_sticky_posts' => 1, // 忽略置顶文章
);

$popular_posts = new WP_Query($popular_posts_args);

if ($popular_posts->have_posts()) {
    echo '<ul class="popular-posts-list">';
    while ($popular_posts->have_posts()) {
        $popular_posts->the_post();
        echo '<li>';
        echo '<a href="' . get_permalink() . '">' . get_the_title() . '</a>';
        // 可选:显示浏览量
        // echo ' (' . get_post_views(get_the_ID()) . ' 次阅读)';
        echo '</li>';
    }
    echo '</ul>';
    wp_reset_postdata(); // 重置查询数据
}

2. 基于评论数量查询

如果“热门”的标准是评论互动多少,可以直接利用WordPress自带的评论计数。

$popular_posts_args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'orderby' => 'comment_count', // 直接按评论数排序
    'order' => 'DESC',
    'ignore_sticky_posts' => 1,
);
// 后面的循环代码与上面相同

3. 创建短代码方便调用

为了在任何文章或页面中都能方便地插入热门文章列表,可以创建一个短代码。

将以下代码添加到 functions.php

// 创建热门文章短代码
function popular_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'count' => '5', // 默认显示5篇
        'time_range' => 'all' // 默认全部时间,这里需要更复杂的查询来实现时间范围,此处为简单示例
    ), $atts);

    $args = array(
        'post_type' => 'post',
        'posts_per_page' => intval($atts['count']),
        'meta_key' => 'post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'ignore_sticky_posts' => 1,
    );

    $output = '';
    $popular_posts = new WP_Query($args);

    if ($popular_posts->have_posts()) {
        $output .= '<ul class="popular-posts-shortcode">';
        while ($popular_posts->have_posts()) {
            $popular_posts->the_post();
            $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
        }
        $output .= '</ul>';
        wp_reset_postdata();
    } else {
        $output .= '<p>暂无热门文章。</p>';
    }

    return $output;
}
add_shortcode('popular_posts', 'popular_posts_shortcode');

使用短代码:​

在文章或页面的编辑器中,直接输入 [popular_posts count="5"]即可显示5篇热门文章。


性能优化建议

  1. 使用Transients API进行缓存​:对于热门文章这类不需要实时更新的数据,强烈建议使用Transients将其结果缓存一段时间(如12小时),可以极大减少数据库查询。
  2. 插件选择​:如果使用插件,如 “WordPress Popular Posts” 自带缓存机制。

总结

方法 优点 缺点 适用场景
WordPress Popular Posts 功能强大,定制性高,有缓存 增加一个插件 大多数用户,特别是非技术人员
手动添加代码 轻量,高性能,完全控制 需要技术基础,不易修改参数 开发者,追求网站速度和精简插件的用户
基于评论数 简单,无需记录浏览量 “热门”标准单一,可能不准确 评论活跃的博客

如何选择?

根据你的技术能力和具体需求,选择最适合的方法即可。对于初学者,从 ​插件开始是最好的选择。如果选择手动添加代码,建议先备份,以防出现不可逆转的问题发生。

发表评论