文章点赞异步调用 WordPress Ajax 接口出错

更新于2018-06-27,如已失效请联系!
这几天一直在基于插件 MyCred 开发一套站长自身使用的金币系统,也正在趁着空闲的时间努力的敲代码,但是期间也发现零零总总不少的原先主题的 Bug,可能这些都是十年间前辈们已经玩的很烂的东西或者技术,但是没事也乐此不疲的耍耍,凭添些生活的少许乐趣。

这个Bug主要是体现在原先的 WordPress 提供给主题开发者调用的 Admin-Ajax.php 接口文件,该接口文件在百度官方的解释是:

安全,WordPress 本身进行了很复杂的安全性优化,如果我们都自己写是很浪费时间和资源的。
兼容,由于文件是公用的,提供了通用的钩子,其它插件都可以参与进去。
高效,这个不解释了,既符合原则(执行到了 init 钩子),又兼顾了效率问题。
方便,一个钩子即可输出代码,都不用判断条件。

大部分异步代码都是挂钩直接设置即可,无需增加任何入口方面的验证,确实不错。
不过这几年不停的爆出来安全的漏洞,所以必须重新审视这个接口带来的便利。

问题描述

今天需要讲的就是基于百度发布的文章异步点赞调用 WordPress Ajax 接口出错的解决方法,原代码如下:
functions 或者 functions-theme,以及设置挂钩:

JavaScript利用WordPress自带异步接口调用:

其他的代码网络上面比比皆是,就不一一列举,这个方法挺不错,利用原先异步获取也很好,但是再加入插件缓存 WP Fastest Cache 和 自身登陆系统校验的情况下,异步获取无论数据类型为 json 或者 XMLTexT 格式都出现全文获取的情况,这个我们都知道是属于异步出错,可能是语法问题或者加载器的问题,但是我打印日志发现除开插件和自身登陆的校验,则问题自动解决,无需更改任何代码。

所以这个问题到目前也还没有好的解决方法,所以老莫就选择自己实现 Ajax 来获取实现点赞接口。
实现方法如下:

后端实现数据更新和 Json 数据返回:

基本上满足对 Bug 的清除,并且无视是否用户登陆即可点赞,如果有技术大佬需要点评或者指正错误,欢迎邮件,博主虚心赐教。

相关文章

参与评论