关于 WordPress 定时任务,之前已介绍过了,如《WordPress如何禁用wp-cron定时任务或添加定时任务》,《为WordPress添加定时任务》,《WordPress怎么禁用定时任务》等文章。
不过,wp-cron 的机制导致在某些场景是不适用的。比如,打开一个页面后,在这个页面需要定时从服务器请求新数据。一般的,这个需求用js的的setInterval 定时发送AJAX请求就可以实现。
WordPress 也提供了一种方案,就是 Heartbeat API。
Heartbeat API是WordPress内置的一个简单的服务器轮询API,允许近似实时的前端更新。
当页面加载时,客户端心跳代码设置一个间隔(称为“滴答”),每隔15-120秒运行一次。当它运行时,heartbeat收集数据通过jQuery事件发送,然后将其发送到服务器并等待响应。在服务器上,管理员ajax处理程序接收传递的数据,准备响应,过滤响应,然后以JSON格式返回数据。客户端接收此数据并触发最终jQuery事件,以指示数据已被接收。
如何使用 Heartbeat API 呢?
第一步,通过 heartbeat-send 事件,向服务器发送数据。
jQuery( document ).on( 'heartbeat-send', function ( event, data ) {
// 需要向后台发送的数据,直接赋值到data就行
data.myplugin_customfield = 'some_data';
});
第二步,在后台接收心跳数据,处理后,并返回结果给前端。
function myplugin_receive_heartbeat( array $response, array $data ) {
// 检查收到的数据
if ( empty( $data['myplugin_customfield'] ) ) {
return $response;
}
// 处理收到的数据,这里的处理的方式是 sha1
$received_data = $data['myplugin_customfield'];
$response['myplugin_customfield_hashed'] = sha1( $received_data );
return $response;
}
add_filter( 'heartbeat_received', 'myplugin_receive_heartbeat', 10, 2 );
第三步,在前端接收后台处理的结果,更新页面或执行其它操作。
jQuery( document ).on( 'heartbeat-tick', function ( event, data ) {
// 检查结果数据
if ( ! data.myplugin_customfield_hashed ) {
return;
}
// 使用结果数据
alert( 'The hash is ' + data.myplugin_customfield_hashed );
});
上面的三步,和发起一个AJAX请求,不能说是一样,简直就是一模一样!
果然,大厂都是喜欢造轮子的。使用 Heartbeat API 的好处就是让代码更加“WordPress”。
最后,有个问题,如果我只需要在前端执行定时任务,而不需要从后端请求数据,还能使用 Heartbeat API 吗?
当然可以,只使用第一步就可以了!
-
重塑WordPress生态的思考与探索前两天的《WordPress圈子到底怎么了...》这篇文章大家都挺有感触的,群里聊得热火朝天。里头啥声音都有:有的哥们儿直接吐槽WordPress性能拖后腿,躲都躲不及;有的则感慨流量难搞,但坚持建站纯粹是出于热爱和那份情怀;还有人预言,以后建站啊,模块化、可视化才是王道;较热闹的还得数短视频和直播,这家伙一来,内容消费整个儿变了天,网站和小程序怎么赚钱都成难题了。
-
Loco Translate 一款专为WordPress设计的翻译插件WordPress Loco Translate是一款专为WordPress用户设计的翻译插件,它简化了主题和插件的多语言翻译过程。
-
WordPress后台待审文章显示气泡提示的方法之前小编分享过一篇《WordPress 后台菜单添加 badge-红点提示(气泡通知)》的文章,今天我简单说说待审文章(为全部文章类型显示待审角标提示)的气泡提示如何操作。
-
FluentSMTP一款功能强大且免费的WordPress SMTP插件FluentSMTP是一款功能强大且免费的SMTP插件,它支持为WordPress配置多个SMTP发送服务器。
-
追格小程序V2.5.8更新发布追格小程序是一款采用积木式理念的微信小程序构建框架,它巧妙融合了Uniapp与WordPress技术,打造出一个开源且无加密限制的开发环境。
-
WordPress必备:使用wp_get_theme()函数获取当前主题详情在WordPress中,wp_get_theme() 函数用于获取当前启用的主题或指定主题的信息。这个函数返回一个 WP_Theme 对象,该对象包含了主题的详细信息,如主题名称、版本、模板目录、样式表目录等。
暂无评论,抢个沙发...