php ajax 点击计数,利用admin-ajax.php使浏览计数兼容WP-SUPER-CACHE

前言

WP-Super-Cache是WordPress上著名的缓存插件,它可以将动态页面保存为静态页面提供给访客,以此来提升加载速度。本博近日准备使用这个插件,但在本地测试时发现使用插件后文章浏览计数不会增加。

问题分析

原因

现用主题的计数方法是将函数勾到single/page的get_header上,在函数内对文章自定义字段views进行读写操作。当插件生成静态页面后,由于此时访问服务器将直接返回静态html,因此不会去执行相关的WP代码。

解决方案

不再通过php函数获取计数,而是通过jQuery ajax异步发送请求,根据服务器的响应来填充对应内容。由于js代码在浏览器中执行,因此就不会有上述问题。为了在服务器端实现这个功能,admin-ajax.php就要登场了!

什么是admin-ajax.php

我们可以将admin-ajax.php理解为wordpress提供的ajax接口(你可能只在漏洞列表里见过它),当用户按照WordPress规定的方法注册自己的响应方法后,便可以通过get或post该文件的方式来获取你编写的方法响应。

编写服务器响应方法

分析需求,在PureLove主题中,有两处与自定义字段views打交道的地方:

首页文章列表中显示的计数(读);

文章或页面顶部显示的计数(读+写)。

因此,需要写两个响应方法,一个读取,一个写入(增加浏览次数)。

1.读取方法

2.写入方法

编写前端脚本

提示:静态化的过程会将php代码执行结果直接生成在html代码间。

1.首页获取计数

由于首页文章列表是通过WordPress主循环打印的,因此为了获取每篇文章的计数,这段代码也放在主循环中。

2.文章页更新并获取计数

当PureLove主题改造到这里后,它已经可以与Wp-Super-Cache兼容了。

Wp-Super-Cache 设置

许多人都开启了“不要为已知用户缓存”,这个对PureLove主题来说是没有必要的。因为该主题的计数功能已经经过改造,而它的评论系统为ajax提交,因此只需开启当某页面有新评论时,只刷新该页面的缓存就好。

其他内容按需设置。之后,便可以在预缓存需要的内容啦!

检查静态化是否生效

在任意页面查看源代码,如果最下有类似的注释:

则代表缓存成功。

引用资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值