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

WordPress插件Cron无人访问时不执行问题求助

WordPress 定时发布插件 Cron 依赖访客的解决方案

针对你的插件遇到的「无人访问时WordPress内置Cron无法运行」问题,给你几个可行的解决思路:

1. 用服务器系统级定时任务替代内置Cron(最可靠方案)

WordPress内置Cron本质是靠访客请求触发,没人访问自然停摆。解决这个问题的核心是脱离访客依赖,用服务器原生定时任务直接触发wp-cron:

  • 第一步:禁用WordPress内置Cron
    在wp-config.php中添加以下代码,避免内置Cron和系统Cron重复执行:
    define('DISABLE_WP_CRON', true);
    
  • 第二步:设置系统定时任务
    • 如果你用Linux服务器,编辑crontab(执行crontab -e),添加一行:
      */1 * * * * curl -s https://你的网站域名/wp-cron.php?doing_wp_cron > /dev/null 2>&1
      
      这会让服务器每分钟触发一次wp-cron,确保任务不会因为无访客而停滞。
    • Windows服务器则用「任务计划程序」,创建定时任务,每隔1分钟调用curl或wget访问上述URL。

2. 用第三方定时请求服务补位(适合无服务器权限场景)

如果没权限操作服务器Cron,可以用免费的定时请求服务(定时向你的wp-cron.php发送请求),模拟访客触发。为了安全,建议给wp-cron加验证:

  • 在wp-config.php添加自定义密钥:
    define('WP_CRON_SECRET', 'your-random-secret-key-here');
    
  • 在插件中添加验证逻辑,只有带正确密钥的请求才会触发Cron:
    add_action('init', function() {
        if (isset($_GET['secret']) && $_GET['secret'] === WP_CRON_SECRET && isset($_GET['doing_wp_cron'])) {
            do_action('wp_cron');
            exit;
        }
    });
    
    之后让定时服务访问https://你的域名/wp-cron.php?secret=your-random-secret-key-here&doing_wp_cron即可。

3. 优化插件任务处理逻辑(辅助方案)

针对你用TXT存储任务的方式,再做些优化,降低对Cron的依赖:

  • 把TXT存储换成WordPress的wp_options表或自定义文章类型,数据管理更可靠,也方便查询待发布任务。
  • 给obtener_articulo_y_publicar()函数加批量处理逻辑:每次有访客访问后台或前台时,自动检查所有待发布任务,判断当前时间是否超过「记录时间+随机发布时间」,如果是就执行发布并移除任务。

插件代码调整建议

确保obtener_articulo_y_publicar()能独立运行:

  • 避免依赖当前用户会话或前台页面环境,函数内部要自行初始化必要的WordPress环境(如果是通过系统Cron调用,可能需要手动加载wp-load.php)。
  • 每次执行任务时,遍历TXT中的记录,逐个判断发布时间,处理完成后从TXT中删除已发布的记录,避免重复执行。

内容的提问来源于stack exchange,提问作者Lucho Piehl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:32:51