解决 WordPress 开启 CDN 加速后,文章阅读统计不更新

近来给我的 WordPress 程序开启了 CDN 加速功能,使用一切正常,忽然发现文章的阅读统计不增加了,原因是只有在第一次访问的时候才会执行 PHP,CDN 缓存后就直接访问的 Html 文件了,所以就不会增加统计了。

解决问题的方式是让 Html 也能统计到浏览次数,这就需要用到 ajax。我们只需要用 ajax 提交文章的ID给后方的 PHP,后方的 PHP 收到文章ID后,就将该文章的浏览数+1,此问题就解决了!

1、首先在你的模板目录下的 footer.php 文件中添加 ajax 代码,注意 URL 的地址要改为自己的 PHP 路径:

<?php if  (is_singular()) : ?>
  <script type= "text/javascript" >
$.ajax({ 
type:'POST', 
url: "//www.xxx.com/wp-content/themes/主题目录/view_cdn.php" ,   /*此处需要修改成自己的域名和php路径*/
data: { 
"postviews_id" : "<?php the_ID();?>" 
} 
}); 
  </script>
<?php endif ; ?>

2、在 WordPress 主题目录下创建 view_cdn.php 文件,把下面代码复制进去:

 <?php
//禁止直接访问本php
if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
        header('Allow: POST');
        header('HTTP/1.1 405 Method Not Allowed');
        header('Content-Type: text/plain');
        exit;
}
require( dirname(__FILE__) . '/../../../wp-load.php' );
nocache_headers();
 
$post_ID = $_POST['postviews_id'];
$post_views = (int)get_post_meta($post_ID, 'views', true);
update_post_meta($post_ID, 'views', ($post_views+1));
?>

3、刷新你的全站 CDN 缓存即可生效,注意:在 WordPress 中安装了缓存插件的话,比如:WP Fastest Cache 等,记得都要关掉,否则会有冲突。

标签

发表评论