You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress wp_schedule_event定时任务不触发,手动运行正常求助

问题核心原因

你的定时任务注册函数send_out_daily_mail没有绑定到任何WordPress初始化钩子上,这段代码永远不会被执行,自然不会生成send_mail_listing_expires定时事件。


修复步骤

  1. 给定时任务注册函数挂载执行钩子
    在现有代码的最后添加一行,将注册函数绑定到WordPress初始化钩子上:
add_action('wp_loaded', 'send_out_daily_mail');
  1. 排查WP-Cron本身的运行限制
  • 检查你的wp-config.php文件中是否存在define('DISABLE_WP_CRON', true);配置,如果有就删掉或者改为false,这行配置会禁用原生WP-Cron功能
  • 如果站点访问量极低,WP-Cron无法被前台访问触发,可以替换为系统级定时任务调用wp-cron.php,不会影响现有代码逻辑
  1. 验证定时任务是否注册成功
    可以安装WP Crontrol插件,在后台工具菜单中查看已注册的定时事件,确认send_mail_listing_expires事件存在且执行周期正确

其他优化建议

如果存在重复注册的定时事件,可以先清理旧实例再注册新事件,避免多任务冲突:

add_action('wp_loaded', function() {
    // 清理已存在的旧定时事件
    $timestamp = wp_next_scheduled( 'send_mail_listing_expires' );
    if( $timestamp ) {
        wp_unschedule_event( $timestamp, 'send_mail_listing_expires' );
    }
    // 注册新定时事件
    if ( ! wp_next_scheduled( 'send_mail_listing_expires' ) ) {
        wp_schedule_event( time(), '5min', 'send_mail_listing_expires' );
    }
});

如果需要每日执行一次定时任务,可以将wp_schedule_event的第二个参数改为daily,不需要额外自定义5分钟间隔。

内容的提问来源于stack exchange,提问作者Mark Gemesi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:45:02