在WordPress中应用wp-cron插件来设置定时义务

PHP 自身是无奈创立定时义务的,然而 WordPress 自带了一个伪定时义务(Cron) API,十分的不便好用,包括 WordPress 自身的定时公布文章都依赖于这个 API

WP Cron 是什么? 是 WordPress 一套定时触发机制, 能够循环布置义务执行. 如: 定时公布新文章, 活期检测版本等性能都是经过这个来完成的.

WP Cron 能够为咱们完成什么? 咱们能够循环更新和提交网站数据, 节日活期向读者发送贺卡或许表单 ...


它的原理就是将创立的定时义务存储到数据库里,当有人拜访的时分就去判别一下能否到工夫需求执行这个定时义务,假如到工夫则执行。

由于这种原理,所以执行的工夫可能会有一些偏差,但随着网站的阅读量攀升和网络爬虫的一直拜访,会让定时义务执行的工夫越来越精确。

WP-Cron 效率不高, 但还是很不便好用的, 整顿了一下相干函数的应用办法如下.

函数

wp_get_schedule

经过勾子别名, 获取预约布置的勾子. 胜利时前往循环周期类别 (hourly, twicedaily, daily, ...), 失败时前往 false.

<?php wp_get_schedule( $hook, $args ) ?>

$hook: 勾子别名
$args: 勾子对应函数的参数数组 (可选)

wp_get_schedules

WordPress 默许支持的循环周期类别有 hourly, twicedaily 和 daily. 经过该函数咱们能够获取一切这些循环周期数组.

<?php wp_get_schedules() ?>

在默许状况下, 由以上办法取得的数组对象如下.

array(
 'hourly' => array(
 'interval' => 3600,
 'display' => 'Once Hourly'
 ),
 'twicedaily' => array(
 'interval' => 43200,
 'display' => 'Twice Daily'
 ),
 'daily' => array(
 'interval' => 86400,
 'display' => 'Once Daily'
 )
)

咱们能够向 cron_schedules 过滤器增加更多的类型. 增加例子如下:

add_filter('cron_schedules', 'cron_add_weekly'); 
function cron_add_weekly( $schedules )
{
 // Adds once weekly to the existing schedules.
 $schedules['weekly'] = array(
 'interval' => 604800, // 1周 = 60秒 * 60分钟 * 24小时 * 7天
 'display' => __('Once Weekly')
 );
 return $schedules;
}
wp_next_scheduled

经过勾子别名, 获取预约布置的下一个运转时辰, 以整型前往. 罕用于判别能否曾经做了预约布置.

<?php $timestamp = wp_next_scheduled( $hook, $args ); ?>

$hook: 勾子别名
$args: 勾子对应函数的参数数组 (可选)

wp_schedule_event

按周期循环预约布置一个 WordPress 勾子, 在预约工夫触发勾子对应的函数.

<?php wp_schedule_event($timestamp, $recurrence, $hook, $args); ?>

$timestamp: 工夫 (整型)
$recurrence: 循环周期类别 (hourly, twicedaily, daily, ...)
$hook: 勾子别名
$args: 勾子对应函数的参数数组 (可选)

wp_reschedule_event

按周期循环从新预约布置一个 WordPress 勾子. 但我发现这个办法不能失常应用, Codex 写得很草, 假如哪位分明晓得怎样应用, 请告知一下.

wp_unschedule_event

经过预约工夫和勾子别名, 勾销预约的布置.

<?php wp_unschedule_event($timestamp, $hook, $args ); ?>
$timestamp: 工夫 (整型)
$hook: 勾子别名
$args: 勾子对应函数的参数数组 (可选)

wp_clear_scheduled_hook

经过勾子别名, 移除预约布置的勾子.

<?php wp_clear_scheduled_hook( $hook ); ?>
$hook: 勾子别名

wp_schedule_single_event

预约布置一个 WordPress 勾子, 在预约工夫触发勾子对应的函数. 与 wp_schedule_event 不同的是该办法的只布置一次触发, 不存在循环预约.

<?php wp_schedule_single_event($timestamp, $hook); ?>

$timestamp: 工夫 (整型)
$args: 勾子对应函数的参数数组 (可选)

从下面的函数可用的参数来看,咱们就能够整顿出以下几个罕用的参数:

参数

$timestamp

(整数)(必需)**次执行此定时义务的工夫,需求传一个工夫戳,普通状况下都是当场执行,但不能用 time() 函数,而是用 WordPress 的工夫函数 current_time()。

默许值:None

$recurrence

(字符串)(必需)执行频率。每隔多长工夫执行一次。能够填写 hourly (每小时执行一次)、twicedaily (每天执行两次,也就是 12 小时执行一次)和 daily (24 小时执行一次)。

默许值:None

$hook

(字符串)(必需)执行的钩子。在执行定时义务的时分会调用这个钩子,往这个钩子挂在函数即可完成定时执行函数。
默许值:None

$args

(数组)(可选)传递的参数,会被传递到挂载到定时钩子的函数里的参数。

默许值:None

前往值

(布尔 | null)假如增加胜利则前往 null,不胜利则前往 False

例子

if( !wp_next_scheduled( 'test' ) ) wp_schedule_event( current_time( 'timestamp' ), 'twicedaily', 'test' );

首先应用 wp_next_scheduled() 函数判别能否曾经创立,假如没创立则创立一个定时义务。

把需求执行的代码挂载到 test 钩子上就行了。

以上就是安达网络工作室关于《在WordPress中使用wp-cron插件来设置定时任务》的一些看法。更多内容请查看本栏目更多内容!

本文相关话题: WordPress 定时任务 wpcron PHP PHP编程
版权声明:本文为 安达网络工作室 转载文章,如有侵权请联系我们及时删除。
相关文章
WordPress评论制止针对指定内容全英文的办法

本文实例讲述了WordPress评论制止针对指定内容全英文的办法。分享给大家供大家参考。详细剖析如下: WordPr...

wordpress上传图片不主动生成缩略图的处理办法

由于站点不需求显示这么多图片,只要要原图就OK了,所以就要修正下媒体设置。关上设置->媒体,将不需求的缩...

处理更新WordPress3.7后DB-Cache缓冲插件抵触成绩

  Fatal error: Call to undefined method wpdb_2::delete() in   /home/*/public_html/wp-includes/o...

wordpress完成公布文章主动ping 百度

为了放慢收录状况 除了谷歌勤快点 百度也不能落下 复制代码代码如下://文章公布自动ping baidu function pi...

wordpress模板罕用函数集锦

根本模板文件 style.css : CSS(款式表)文件index.php : 主页模板archive.php : Archive/Category模板404.ph...

自定义wordpress登录页的一些技巧办法

下文提到的一切代码,都是增加到主题的funshions.php 文件的最初一个 ?> 的后面。 制造一个名为 login_logo...

需求提交

客服服务