解决WordPress定时发布文章“定时发布失效”的问题

2025年09月30日17:08:18 发表评论 热度3 ℃

WordPress 默认调度机制中,定时发布文章的时间间隔非常短(约0.01秒),如果服务器配置较低或执行环境限制,可能导致定时任务无法按时执行,出现“定时发布失效”的情况。那么,如何解决WordPress定时发布失败的问题呢?以下三种方法供你参考:

1. 开启内存缓存,提高服务器性能

定时发布依赖于服务器资源的及时响应,低配置服务器经常无法在极短时间内完成任务,建议启用内存缓存(如Redis、Memcached等)来加速PHP执行和数据库查询,减轻服务器负载,提高定时任务成功率。

2. 修改WordPress核心文件中的cron.php

定位到网站根目录的 wp-includes/cron.php 文件,搜索 "timeout" 相关代码:

解决WordPress定时发布文章“定时发布失效”的问题

将其中的数值 0.01 修改为更大的数值,比如 10.00,以延长任务允许的超时时间,给定时调度更多缓冲时间。

注意:

此文件属于WordPress核心文件,每当WordPress升级时,该修改将被覆盖,需要重新调整。

3. 在主题的 functions.php 文件中添加代码,自动补偿定时任务

如果不喜欢频繁修改核心文件或安装插件,可以在当前主题的 functions.php 末尾添加以下代码,手动触发和补偿定时发布的文章:

  1. //解决 WordPress 定时发布失败的问题 - https://www.dujin.org/14689.html
  2. <?php
  3. if(!function_exists('add_action')){
  4.     header('Status 403 Forbidden');header('HTTP/1.0 403 Forbidden');header('HTTP/1.1 403 Forbidden');exit();}
  5. ?>
  6. <?php
  7.  function wpms_log(){
  8.      echo"\n<!--Plugin WP Missed Schedule 2011.0920.2011 Active-->";
  9.      }
  10.      add_action('wp_head','wpms_log');
  11.      add_action('wp_footer','wpms_log')
  12. ?>
  13. <?php
  14. define('WPMS_DELAY',5);
  15. define('WPMS_OPTION','wp_missed_schedule');
  16. function wpms_replace(){
  17.     delete_option(WPMS_OPTION);
  18.     }
  19.     register_deactivation_hook(__FILE__,'wpms_replace');
  20.     function wpms_init(){
  21.         remove_action('publish_future_post','check_and_publish_future_post');
  22.         $last=get_option(WPMS_OPTION,false);
  23.         if(($last!==false)&&($last>(time()-(WPMS_DELAY*60))))return;
  24.         update_option(WPMS_OPTION,time());
  25.         global$wpdb;
  26.         $scheduledIDs=$wpdb->get_col("SELECT`ID`FROM`{$wpdb->posts}`"."WHERE("."((`post_date`>0)&&(`post_date`<=CURRENT_TIMESTAMP()))OR"."((`post_date_gmt`>0)&&(`post_date_gmt`<=UTC_TIMESTAMP()))".")AND`post_status`='future'LIMIT 0,5");
  27.         if(!count($scheduledIDs))return;
  28.         foreach($scheduledIDs as$scheduledID){if(!$scheduledID)continue;
  29.         wp_publish_post($scheduledID);}
  30.         }
  31.     add_action('init','wpms_init',0)
  32. ?>

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: