解决 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 等,记得都要关掉,否则会有冲突。
发表评论