
**注意:** 你需要确保你的服务器上安装了WP-CLI,并且有执行`wp`命令的权限。
自定义计划任务未注册或未正确触发:
原因: 可能是代码中存在错误,导致计划任务未正确注册或触发。
解决方案:
检查代码: 仔细检查注册计划任务和执行计划任务的代码,确保没有语法错误或逻辑错误。
使用wp cron event list命令: 使用WP-CLI的wp cron event list命令来查看已注册的计划任务列表,确认你的自定义计划任务是否已成功注册。
wp cron event list
使用wp cron event run命令: 使用WP-CLI的wp cron event run <hook>命令来手动触发指定的计划任务,查看是否能够正常执行。
wp cron event run hits_set_zero
将 <hook> 替换为你的计划任务的钩子名称。
调试代码: 在计划任务的执行函数中添加调试代码(例如error_log()),以便查看执行过程中是否出现错误。
自定义时间间隔未生效:
原因: 自定义时间间隔可能未正确注册或未被WordPress识别。
解决方案:
确保时间间隔已注册: 检查cron_schedules过滤器是否正确添加了自定义时间间隔。
function custom_cron_job_recurrence( $schedules ) {
if(!isset($schedules['10sec'])) {
$schedules['10sec'] = array(
'display' => __( 'Every 10 Seconds', 'twentyfifteen' ),
'interval' => 10,
);
}
return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_recurrence' );检查时间间隔名称: 确保在wp_schedule_event()函数中使用了正确的时间间隔名称。
wp_schedule_event( time(), '10sec', 'hits_set_zero' );
刷新计划任务: 在修改了时间间隔后,需要重新注册计划任务才能生效。可以先取消计划任务,然后再重新注册。
wp_clear_scheduled_hook( 'hits_set_zero' ); wp_schedule_event( time(), '10sec', 'hits_set_zero' );
以下是一个完整的示例,演示如何创建一个每10秒执行一次的自定义计划任务:
<?php
/**
* Plugin Name: Custom Cron Example
* Description: Demonstrates how to create a custom cron job.
*/
// 添加自定义时间间隔
function custom_cron_job_recurrence( $schedules ) {
if(!isset($schedules['10sec'])) {
$schedules['10sec'] = array(
'display' => __( 'Every 10 Seconds', 'my-plugin' ),
'interval' => 10,
);
}
return $schedules;
}
add_filter( 'cron_schedules', 'custom_cron_job_recurrence' );
// 计划任务执行的函数
function my_custom_cron_function() {
error_log( 'Custom cron job executed at: ' . date( 'Y-m-d H:i:s' ) );
// 在这里执行你的任务
}
add_action( 'my_custom_cron_hook', 'my_custom_cron_function' );
// 注册计划任务
function my_custom_cron_activation() {
if ( ! wp_next_scheduled( 'my_custom_cron_hook' ) ) {
wp_schedule_event( time(), '10sec', 'my_custom_cron_hook' );
}
}
register_activation_hook( __FILE__, 'my_custom_cron_activation' );
// 取消计划任务
function my_custom_cron_deactivation() {
wp_clear_scheduled_hook( 'my_custom_cron_hook' );
}
register_deactivation_hook( __FILE__, 'my_custom_cron_deactivation' );注意事项:
WordPress的WP-Cron系统虽然方便易用,但其依赖于网站访问的特性使其在某些情况下不够可靠。通过理解WP-Cron的机制,并结合使用WP-CLI进行测试,以及考虑使用更可靠的系统Cron,可以有效地解决自定义计划任务不执行的问题,确保你的计划任务能够按预期运行。
以上就是WordPress自定义计划任务不执行问题排查与解决方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号