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