wordpress使用缓存或cdn后文章阅读量不更新解决办法

代码人生 潘老师 2年前 (2022-02-24) 755 ℃ (0) 扫码查看

潘老师个人博客之前不是使用了WP-Optimize缓存插件嘛,发现使用后文章虽然有很多用户点击访问,但是后台的文章阅读量一直没有更新,如果使用cdn也会存在这种情况,今天找了一个方法成功解决了wordpress使用缓存或cdn后文章阅读量不更新的问题

现在直接上代码:

1)第一步:新建名为views.php的文件,代码内容如下:

<?php
require( dirname(__FILE__).'/../../../../wp-load.php' );
nocache_headers();
$post_ID = isset($_POST['post_ID']) ? (int) $_POST['post_ID'] : 0;
if ($post_ID!=0 ) {
    $post_views = (int) get_post_meta($post_ID, 'views', true);
        if (!update_post_meta($post_ID, 'views', ($post_views + 1))) {
            add_post_meta($post_ID, 'views', 1, true);
        }
    $post_views = (int) get_post_meta($post_ID, 'views', true);
        print_r(json_encode(array('error' => 0, 'views' => 1, 'response' => $post_views)));
        exit;
}else{
    print_r(json_encode(array('error' => 1, 'views' => 0, 'response' => $post_views)));
        exit;
}
?>

该代码作用就是根据访问文章的id,更新数据库中该文章的访问量,也就是执行访问量加1操作,并返回最新的阅读量。

然后将该文件上传到主题下的action目录(如果没有,就自己就新建一个)

2)第二步:新建一个名为currentviews.js的js文件,代码如下:

function getpostviews(postid) {
    $.ajax({
        type: "POST",
        url: 'https://www.你的域名.com/wp-content/themes/你的主题目录/action/views.php',
        dataType: "json",
        data: {
            "post_ID": postid
        },
        success: function(data, textStatus, xhr) {
            if (data.error) {
                return false;
            } else {
                // 这里的样式换为自己的
                $(".currentviews").text("阅读量(" + data.response + " )");
            }
        }
    });
}

注意这里的.currentviews是我的阅读量标签对应的class样式,你根据自己的情况进行设置。
然后将文件上传至你的主题的assets存放静态资源的目录下,比如我的就放在/wp-content/themes/Git-alpha/assets/js目录下。

3)第三步:修改footer.php

这里有两种方式,一种是修改single.php文章页,在最后加上对currentviews.js的引用和一段js脚本代码,类似如下:

//引入js,主要次js依赖jQuery,需要放在最后
<script type="text/javascript" src="https://www.xxxx.com/wp-content/themes/Git-alpha/assets/js/currentviews.js"></script>
//调用接口代码
<script type="text/javascript">
    $(document).ready(function (){
        <?php echo 'getpostviews('.get_the_ID().');';?>
    });
</script> 

第二种方式是,为了避免在文章页加载该js,更建议放在footer.php下,通过is_single()方法判断只有是文章页的时候,才会调用更新文章阅读量的接口,因此找到主题下的footer.php,新增如下代码:

<?php if(is_single()){ ?>    
<script type="text/javascript">
    $(document).ready(function (){
        <?php echo 'getpostviews('.get_the_ID().');';?>
    });
</script> 
<?php }?>

这两种方式,选择一种就可以了。

4)第四步:最后重新刷新你网站的缓存,就能实现文章阅读量更新了。

使用此方法,就轻松解决了wordpress使用缓存或cdn后文章阅读量不更新的问题了。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/4560.html
喜欢 (2)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】