前几天给网站添加了文章的浏览量统计功能,但统计了几天后发现,统计了个寂寞,来访的除了蜘蛛就是自己,意义不大,索性删除了罢。想要统计,后面可以接入专门的网站统计系统,比如Google Analytics。下面把wordpress文章统计代码分享出来。
下面的代码我是加到functions.php里面的,当然,也可以做成插件。
/**
* 获取文章阅读量
*
* @since 2024.10.25
*
*/
function getPostViews($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;
}
/**
* 更新文章阅读量
*
* @since 2024.10.25
*
*/
function setPostViews($postID) {
// 检查用户是否已登录
if (is_user_logged_in()) {
return; // 已登录用户,不执行统计
}
$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);
}
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
使用方法:
把setPostViews
函数加到single.php里面,如果有访问就会调用该函数实现文章阅读统计。然后在适当的地方调用getPostViews
函数用于获取文章的阅读量。
当然,也可以完善setPostViews
函数,使之不统计蜘蛛的流量,要实现也不难,通过useragent来判断即可。但既然觉得这事没有意义,也就懒得去做了。
补充:
既然去掉了该功能,那么数据库里产生的统计数据就要删除掉:
DELETE FROM wp_postmeta WHERE meta_key = 'post_views_count';