潘老师个人博客之前不是使用了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后文章阅读量不更新的问题了。