如何为wordpress的文章添加阅读量

要在 WordPress 上实现文章阅读统计(跟踪每篇文章的阅读次数或页面浏览量),可以借助插件或自定义代码。以下是几种常见的方法和工具,如果使用代码请注意文章内容。

方法一:使用插件实现文章阅读统计

  1. MonsterInsights
  • MonsterInsights 是最受欢迎的 Google Analytics 插件之一,可以直接在 WordPress 仪表板中查看每篇文章的页面浏览量、访客行为、跳出率等数据。通过其 Page Insights 扩展,还可以查看单篇文章的详细统计(如页面浏览量、停留时间等)。必须绑定GA。
  1. WP Statistics
  • WP Statistics 是一个隐私友好的分析插件,符合 GDPR 要求,无需外部账户,直接在 WordPress 数据库中存储数据。它可以跟踪每篇文章的访问量,并提供详细的图表和分类分析。不过最顶上那个评论似乎说明了一些问题,我没尝试这个插件,观望一下。
  1. Post Views Counter
  • 一个轻量级插件,专门用于显示文章、页面或自定义内容的浏览次数。它支持通过 PHP、JavaScript 或 REST API 跟踪数据,并允许自定义计数器的显示位置和样式。
  1. Jetpack Stats
  • Jetpack 的统计模块提供文章的浏览量、热门内容、流量来源等数据,适合 WordPress.com 用户或安装了 Jetpack 的自托管站点。免费用户可查看过去 7 天的统计,付费计划解锁更多功能。
  1. Independent Analytics
  • 一个专为 WordPress 设计的免费分析插件,加载速度快,符合 GDPR。它可以自动记录文章的访问量,并按类别显示统计数据。
  1. 如果你恰好财力雄厚,你可以使用一些主题的pro版本自带的功能
  • 这里就不对赘述了,例如我使用的blocksy主题,在设置页面左侧点击blocksy,设置中文章元数据打开显示即可。

方法二:插件之短码插件(推荐)

  1. Post Views for Jetpack
  • 提供短码,可以在文章、页面或小工具中显示各种统计数据。以下部分代码复制于这个插件的讨论区: https://wordpress.org/support/topic/way-to-display-views-in-blocksy-post-meta/

这个插件如何在blocksy中使用?请在你的function.php中添加以下代码 (注意把[sbs_views] 修改为你上面短码插件中约定的短码):


    add_filter( 'blocksy:archive:render-card-layer', function ( $output, $single_component) {
    	if ( 'post_meta' !== $single_component['id'] ) {
    		return $output;
    	}
    	$post_views = do_shortcode( '<span style="background-color: initial; font-family: inherit; text-align: initial;">[sbs_views]</span>' );

    	$output = str_replace( '</li></ul>', '</li><li class="post-views">' . $post_views . '</li></ul>', $output );
    	return $output;
    }, 11, 2 );

方法三:自定义代码实现阅读统计

在你的主题的function.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 track_post_views($postID) {
        if (!is_single()) return;
        if (empty($postID)) {
            global $post;
            $postID = $post->ID;
        }
        set_post_views($postID);
    }
    add_action('wp_head', 'track_post_views');

    // 显示文章浏览量
    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 Views";
        }
        return $count . ' Views';
    }

在需要使用的地方添加:


    echo get_post_views(get_the_ID());

如果需要在blocksy主题中使用:


    add_filter( 'blocksy:archive:render-card-layer', function ( $output, $single_component ) {
        if ( 'post_meta' !== $single_component['id'] ) {
            return $output;
        }

        $output = str_replace( '</li></ul>', '</li><li class="post-views">' . get_post_views(get_the_ID()) . '</li></ul>', $output );
        return $output;
    }, 10, 2 );


注意上面所有的代码部分,可能会造成不可回溯的内容。

部分可能会在你数据库的前缀_postmeta表中创建很多key为post_views_count 的数据,介意的话可以使用第三方插件或者自己手动修改。另外注意,有的主题不允许修改functions.php的代码,你复制代码保存失败时,可以按 ctrl+ shift + v 粘贴。