给 WordPress 添加文章浏览量统计功能

前几天给网站添加了文章的浏览量统计功能,但统计了几天后发现,统计了个寂寞,来访的除了蜘蛛就是自己,意义不大,索性删除了罢。想要统计,后面可以接入专门的网站统计系统,比如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';