WordPress定时功能

最近研究了下wordpress的定时功能,如果有定时功能,很多时候就省了使用cpanel或者linux来进行定时任务了。WordPress定时功能是通过 WP-Cron 实现的,它会在每次你的博客有人访问或者在后台工作的时候,检查当前是否有任务要执行,如: 定时发布新文章, 定期检测版本等,虽然效率不高,但是胜在方便。

WordPress 定时任务方法列表可以参考: WP-Cron Functions

相关函数的使用方法如下.

1、wp_get_schedule
通过勾子别名, 获取预定安排的勾子. 成功时返回循环周期类别 (hourly, twicedaily, daily, …), 失败时返回 false.

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

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

2、wp_get_schedules
WordPress 默认支持的循环周期类别有 hourly, twicedaily 和 daily. 通过该函数我们可以获取所有这些循环周期数组.

1
<?php wp_get_schedules() ?>

在默认情况下, 由以上方法获得的数组对象如下.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
array(
	'hourly' => array(
		'interval' => 3600,
		'display' => 'Once Hourly'
	),
	'twicedaily' => array(
		'interval' => 43200,
		'display' => 'Twice Daily'
	),
	'daily' => array(
		'interval' => 86400,
		'display' => 'Once Daily'
	)
)

我们可以向 cron_schedules 过滤器添加更多的类型. 添加例子如下:

1
2
3
4
5
6
7
8
9
10
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;
}

3、wp_next_scheduled
通过勾子别名, 获取预定安排的下一个运行时刻, 以整型返回. 常用于判断是否已经做了预定安排.

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

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

4、wp_schedule_event
按周期循环预定安排一个 WordPress 勾子, 在预定时间触发勾子对应的函数.

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

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

5、wp_reschedule_event
按周期循环重新预定安排一个 WordPress 勾子. 但我发现这个方法不能正常使用, Codex 写得很草, 如果哪位清楚知道怎么使用, 请告知一下.

6、wp_unschedule_event
通过预定时间和勾子别名, 取消预定的安排.

1
<?php wp_unschedule_event($timestamp, $hook, $args ); ?>

$timestamp: 时间 (整型)
$hook: 勾子别名
$args: 勾子对应函数的参数数组 (可选)

7、wp_clear_scheduled_hook
通过勾子别名, 移除预定安排的勾子.

1
<?php wp_clear_scheduled_hook( $hook ); ?>

$hook: 勾子别名

8、wp_schedule_single_event
预定安排一个 WordPress 勾子, 在预定时间触发勾子对应的函数. 与 wp_schedule_event 不同的是该方法的只安排一次触发, 不存在循环预定.

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

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

参考文章:WordPress Cron 定时任务



本文出自 TENNFY WU,转载时请注明出处及相应链接。

本文永久链接: http://www.tennfy.com/1645.html

下一篇文章:

上一篇文章:

6人参与了讨论

  1. xilouqingzhu 说:

    管用就行,不需明白 :evil:

  2. WordPress的定时任务经常失效 -,-

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

3 + 3 = ?


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

返回顶部