WordPress自定义定时任务:每6小时执行失效求助
问题排查与解决方案
核心问题:WordPress 默认不提供 six_hours 这个预定义的 Cron 时间间隔,直接使用未注册的间隔参数会导致调度逻辑失效(无报错,但任务无法按预期周期运行)。
修复步骤
注册自定义 Cron 间隔
通过cron_schedules过滤器添加6小时间隔,这一步必须在调度事件前执行,让WordPress识别这个自定义周期。规范任务调度逻辑
先清理可能存在的旧无效调度,再重新执行任务调度,避免残留的错误调度影响结果。
修改后的完整代码
// 注册6小时的Cron时间间隔 add_filter('cron_schedules', function($schedules) { $schedules['six_hours'] = array( 'interval' => 21600, // 换算为秒:6*60*60=21600 'display' => __('Every 6 Hours') ); return $schedules; }); // 调度定时任务 add_action('init', function() { // 清除之前可能存在的无效调度 wp_clear_scheduled_hook('awpl2_cron_hook2'); // 重新调度符合周期要求的任务 if (!wp_next_scheduled('awpl2_cron_hook2')) { wp_schedule_event(time(), 'six_hours', 'awpl2_cron_hook2'); } }); // 绑定任务执行函数 add_action('awpl2_cron_hook2', 'awpl2_cron_function2'); function awpl2_cron_function2() { send_request($client . "&url_domainsss=$url&email_domainsss=$email"); }
额外注意事项
- 修改后需访问一次网站前台或后台,触发
init钩子完成调度逻辑。 - 确保
send_request函数、$client、$url、$email变量均已正确定义,避免任务执行时出现其他异常。
内容的提问来源于stack exchange,提问作者alex dev
相关产品推荐
相关产品推荐

