豆豆の鱼.

Life record . 记录自己的日常琐事.

WordPress非插件实现阅读统计和显示(cookie)

由于使用了Typecho建站系统中模仿Pinghsu主题的WordPress主题,所以一些功能上有些失效或者确实,就需要自己动手填补了。刚好此主题没有文章阅读统计和显示功能,所以来说下怎么实现这个功能,所有主题通用。(不通用,你也拿我没办法,哈哈)

先了解一下文章阅读统计的思路:当每进入一次文章详情页面, 就会通过cookie判断该用户是否在设定的过期时间内访问过该文章, 若没有访问过, 则浏览次数增加一次。看下效果展示:

1563771517 20190722125752 WordPress非插件实现阅读统计和显示(cookie)

添加方法如下

第一,找到主题目录下的functions.php文件,也可以在后台

添加以下代码至主题的functions.php文件, 放在该文件最下面即可:后台-外观-编辑 中找到,在其中合适位置添加以下代码:

function getPostViews($postID){
    $count_key = 'views';
    $count = get_post_meta($postID, $count_key, true);
    if($count=='' || !$count){
        return "0";
    }
    return $count;
}
function setPostViews($postID){
    $count_key = 'views';
    $count = get_post_meta($postID, $count_key, true);
    if($count=='' || !$count) {
        $count = 1;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, $count);
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

第二,同样在主题目录下找打single.php文件,找其最顶部添加上cookie判断语句,其中时间间隔可自定义,代码如下:

<?php 
if(!isset($_COOKIE['views'.$post->ID.COOKIEHASH]) || $_COOKIE['views'.$post->ID.COOKIEHASH] != '1'){
    setPostViews($post->ID);
    setcookie('views'.$post->ID.COOKIEHASH,'1',time() + 99999999,COOKIEPATH,COOKIE_DOMAIN);
} 
?>

第三,将显示统计代码添加到适合页面位置,比如page\post等,这个需要你自己判断你使用主题作者是怎么写的,万变不离其中,找到相应的位置,添加如下代码:

<?php echo getPostViews(get_the_ID());?>

比如,我现在这个主题,就是添加在sing.php中,如下图:

1563771364 20190722125514 WordPress非插件实现阅读统计和显示(cookie)

点赞
    1. midousir说道:

      肥鱼肥鱼,能收到邮件回复不?

  1. 执迷不悟说道:

    这一版很清新嘛

    1. midousir说道:

      还有问题啊,评论回复功能有问题,还没找到问题所在,比如我在前台你的留言处点击回复第一次会刷新页面,第二次就没反应了,只能在后台评论处回复,有点忧桑!

  2. 心灵博客说道:

    网址不带http,blog.dngz.net

    1. midousir说道:

      心灵,我的博客的评论回复功出现问题了,给别人回复,点击回复后,,没反应,别人也收不到邮件。

    2. midousir说道:

      最近评论区有Bug,今天才修复,上次给的评论肯定你都没收到邮件,哈哈!才发现!

发表评论

电子邮件地址不会被公开。 必填项已用*标注