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

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

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

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

	$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 粘贴。

2 评论

留下评论

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