在 WordPress 中,我们可以使用wp_schedule_event函数来设置定时作业(cron job),即根据需要按每小时、每天、每周和每月循环执行一次。此外,还可以使另一个函数 wp_schedule_single_event 创建只需要执行一次的一次性任务。
1. wp_schedule_event 函数
1.1 函数介绍:
该函数接受三个参数:$timestamp:表示作业的执行时间,以时间戳格式表示;$recurrence:表示作业的执行频率;$hook:表示要执行的回调函数的名称。
其中 $recurrence 频率支持如下参数:
- ⭕hourly:表示每小时执行一次(0分0秒开始);
- ⭕twicedaily:表示每天执行两次(分别在12小时间隔内);
- ⭕daily:表示每天执行一次(0时0分0秒开始);
- ⭕weekly:表示每周执行一次(星期日的0时0分0秒开始);
- ⭕monthly:表示每月执行一次(当月1号的0时0分0秒开始)
1.2 示例代码:
// 设置每天上午10点钟执行一次定时作业 function schedule_my_cronjob() { if ( ! wp_next_scheduled( 'cccitu_cronjob_hook' ) ) { // 设定定时作业执行时间(东八区时间) $timestamp = strtotime('today 10:00am Asia/Shanghai'); wp_schedule_event($timestamp, 'daily', 'cccitu_cronjob_hook'); } } add_action( 'wp', 'schedule_my_cronjob' ); // 自定义定时作业回调函数 function my_cronjob_callback() { // 这里写定时作业要执行的代码 // ... } add_action( 'cccitu_cronjob_hook', 'my_cronjob_callback' );
上述示例代码中,我们首先定义了一个名为 schedule_my_cronjob 的函数,该函数用于设定定时作业的执行时间和回调函数。在该函数中,我们使用了 strtotime 函数来将东八区时间字符串转换为时间戳,然后调用 wp_schedule_event 函数来注册定时作业,指定了作业的执行时间、执行频率和回调函数的名称。
之后,我们又定义了一个名为 my_cronjob_callback 的函数作为定时作业的回调函数,该函数中可以编写定时作业的具体逻辑。
最后,我们使用 add_action 函数将 schedule_my_cronjob 函数和 my_cronjob_callback 函数注册到 WordPress 的钩子中。当 WordPress 调用 wp 钩子时,便会自动执行 schedule_my_cronjob 函数,进而设置定时作业。当到达设定的定时作业执行时间时,WordPress 会调用 my_cronjob_callback 函数,执行预定的定时任务。
2. wp_schedule_single_event 函数
2.1 函数介绍
该函数与上面的wp_schedule_event函数类似,不同之处在于它只能用于执行一次性任务。
wp_schedule_single_event 函数接受三个参数:
- ⭕$timestamp:表示任务的执行时间,以时间戳格式表示;
- ⭕$hook:表示要执行的回调函数的名称;
- ⭕$args(可选):表示回调函数的参数,以数组格式传递。
2.2 示例代码:
// 在激活插件时添加一次性任务 function cccitu_activation_function() { // 设置任务的执行时间为2分钟后 $timestamp = time() + 2 * 60; // 注册一次性任务并指定回调函数 wp_schedule_single_event($timestamp, 'cccitu_one_time_task', array('param1', 'param2')); } register_activation_hook(__FILE__, 'cccitu_activation_function'); // 自定义一次性任务回调函数 function cccitu_one_time_task_callback($param1, $param2) { // 这里编写一次性任务要执行的代码 // ... } add_action('cccitu_one_time_task', 'cccitu_one_time_task_callback', 10, 2);
上述示例代码中,我们使用 wp_schedule_single_event 函数在激活插件时添加了一个一次性任务,该任务的执行时间为2分钟后。
在回调函数 cccitu_one_time_task_callback 中,我们可以编写一次性任务要执行的具体逻辑,同时可以通过传递参数的方式将参数传递给回调函数。
最后,我们使用 add_action 函数将 cccitu_one_time_task_callback 函数注册到名为 cccitu_one_time_task 的钩子中,以便 WordPress 在任务执行之时调用回调函数。
3. WordPress 计划任务管理插件
以下是几个常用的 WordPress 计划任务管理插件:
- ⭕WP Crontrol:一个功能强大的 WordPress 计划任务管理插件,可以查看、编辑、添加和删除计划任务。同时,它也可以查看所有已注册的钩子,并对已注册的钩子进行编辑、刷新和删除操作。
- ⭕WP Control:一个轻量级的 WordPress 计划任务管理插件,提供了计划任务的列表视图,以及快速添加、编辑和删除计划任务的功能。它还可以查看计划任务的执行历史记录,并导出或下载执行历史记录。
- ⭕Advanced Cron Manager:一个功能丰富的计划任务管理插件,可以查看、编辑和删除系统中所有的计划任务,并可以创建和分配新计划任务。它还提供了类似于系统任务管理器的实时监视功能。
- ⭕Simple Cron:一个简单易用的计划任务管理插件,可以查看、修改和删除 WordPress 计划任务,并显示它们最近一次执行的时间、下一次执行的时间和上一次执行的状态等细节信息。
以上是一些比较常用的 WordPress 计划任务管理插件,可以选择适合自己的来使用。这些插件的功能和用法大同小异,但其中也可能有一些独特的功能,具体可以查看每个插件的介绍和用户评价,以选择最适合的。
暂无评论
要发表评论,您必须先 登录