关于WordPress开启CDN后浏览量不增加

自从去年年底给全站开启了CDN缓存,所有发布的新帖子的浏览量基本都是个位数,甚是寒颤,毕竟以前浏览量都是大几百的,于是乎,改一下程序吧,记录一下坑。

因为统计代码在PHP程序里面,但是CDN之后,都缓存了HTML文件,访问只访问HTML,不访问源站,不请求PHP文件,所以不增加访问量。

原来统计浏览量的方法由主题文件提供,那我们可以用Ajax来异步请求,同时使用cookies来限制访问次数无限增加的问题,最后让ajax获取后台的访问量,修改前台显示的访问量,就可以了。

(其实我没太搞懂,但是可以参考大佬的做法,来源>>>>>成航先生

解决WordPress加入CDN后“非插件浏览次数统计”浏览次数不刷新问题

CDN后用Ajax动态提交、显示文章阅读量,cookies避免重复刷新

首先在footer.php中添加ajax的代码,注意需要将前台显示访问量的标签ID或class名称改成自己的。

<script type= "text/javascript" > 
function GetCookie(sName) {
    var arr = document.cookie.match(new RegExp("(^| )"+sName+"=([^;]*)(;|$)"));
    if(arr !=null){return unescape(arr[2])};
    return null;
}
var postviews_cook=GetCookie("postviews<?php the_ID();?>");
  if ( postviews_cook == null ){
$.ajax({ type:'POST', url: "<?php echo admin_url('admin-ajax.php');?>" , data:"postviews_id=<?php the_ID();?>&action=postviews",
cache:false,success: function(postviews_count){ $("#views").text('阅读:' + postviews_count + ' 次');document.cookie="postviews<?php the_ID();?>=" + postviews_count;} }); 
  }
  else{
$("#views").text('阅读:' + postviews_cook + ' 次');
};
 </script>
<?php endif ; ?>

然后直接在自己主题的functions.php中添加下面的代码:

/*
* 缓存时更新浏览量-有缓存
* //www.capjsj.cn/ajax_cookies_views.html
*/
function postviews_cache(){
    if( empty( $_POST['postviews_id'] ) ) return;
        $post_ID = $_POST['postviews_id'];
        if( $post_ID > 0 ) {
                $post_views = (int)get_post_meta($post_ID, 'views', true);
/*if( !defined( 'WP_CACHE' ) || !WP_CACHE ){ 以前的错误代码*/
if( defined( 'WP_CACHE' ) && WP_CACHE ){ //如果wp-config.php开启缓存
    update_post_meta($post_ID, 'views', ( $post_views + 1 ));
}
                echo ( $post_views + 1 );
                exit();
        }
}
add_action( 'wp_ajax_nopriv_postviews', 'postviews_cache' );
add_action( 'wp_ajax_postviews', 'postviews_cache' );

注意:如果网站的WordPress只加入了CDN,没有使用缓存插件的话,需要将上面代码改成下面的,也就是删除开启缓存判断:

/*
* 缓存时更新浏览量-无缓存
* //www.capjsj.cn/ajax_cookies_views.html
*/
function postviews_cache(){
    if( empty( $_POST['postviews_id'] ) ) return;
        $post_ID = $_POST['postviews_id'];
        if( $post_ID > 0 ) {
                $post_views = (int)get_post_meta($post_ID, 'views', true);
                update_post_meta($post_ID, 'views', ( $post_views + 1 ));
                echo ( $post_views + 1 );
                exit();
        }
}

如果想使用有缓存的版本,想要开启网站缓存,可以选择安装缓存插件,或者直接在网站根目录的wp-config.php中,加入下面这行代码:

define('WP_CACHE', true);

如果你看不懂,可以选择关闭页面……

反正我还没有搞懂,先放着……

转载请标明出处:落羽日记 » 关于WordPress开启CDN后浏览量不增加

赞 (4) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

   
抱回家