惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
U
Unit 42
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Full Disclosure
月光博客
月光博客
Engineering at Meta
Engineering at Meta
博客园_首页
The Register - Security
The Register - Security
G
Google Developers Blog
The Cloudflare Blog
博客园 - Franky
K
Kaspersky official blog
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
NISL@THU
NISL@THU
AI
AI
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Vercel News
Vercel News
T
Tor Project blog
P
Privacy International News Feed
D
Docker
I
Intezer
L
LangChain Blog
P
Proofpoint News Feed
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
博客园 - 聂微东
AWS News Blog
AWS News Blog
Martin Fowler
Martin Fowler
P
Privacy & Cybersecurity Law Blog
V
V2EX
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
The Hacker News
The Hacker News
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

落羽日记

无题杂记 囚笼 吐槽 怎么放下对爱情的执念? 我们·在夏天·相遇·也分开 今天我们来讲三观 2023,我站在命运和时间的十字路口(更新中) (转载)用奋斗擦亮青春底色 生在红旗下,长在春风里
关于WordPress开启CDN后浏览量不增加
君 落羽 · 2023-07-05 · via 落羽日记

自从去年年底给全站开启了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后浏览量不增加