首页 Wordpress WordPress 解决文章定时发布失败问题

WordPress 解决文章定时发布失败问题

WordPress 定时发布失败(Missed Schedule),核心原因是 WP-Cron 伪定时依赖访客触发、服务器时区 / 时间不准、插件 / 缓存冲突、主机限制。无插件、纯代码方案。

二、根源根治(永久解决,推荐)

方案 1:修改 WP-Cron 超时(虚拟主机首选,无插件)

WP 默认timeout=0.01秒,虚拟主机响应慢就触发失败,改长一点: 1、备份wp-includes/cron.php 2、找到(约 322 行): 3、把0.01改成10.0(10 秒),保存上传,解决 90% 虚拟主机超时问题。
php
$cron_request = apply_filters( 'cron_request', array(
    'url' => add_query_arg( 'doing_wp_cron', $doing_wp_cron, site_url( 'wp-cron.php' ) ),
    'key' => $doing_wp_cron,
    'args' => array(
        'timeout' => 0.01, // 改这里
        'blocking' => false,
        'sslverify' => apply_filters( 'https_local_ssl_verify', false )
    )
), $doing_wp_cron );

方案 2:替换为真实服务器 Cron(最稳定,虚拟主机 / 云服务器通用)

WP-Cron 是 “访客触发”,没人访问就不执行;换成服务器级定时任务,强制每 5 分钟跑一次: 1、先禁用 WP 伪 Cron:wp-config.php加:
php
define('DISABLE_WP_CRON', true);
define('WP_CRON_LOCK_TIMEOUT', 120);

方案 3:代码自动补发(无插件、纯主题 /functions)

php
// 修复WordPress定时发布失败 Missed Schedule
add_action('init', 'fix_missed_scheduled_posts');
function fix_missed_scheduled_posts() {
    if (!wp_next_scheduled('fix_missed_schedule_hook')) {
        wp_schedule_event(time(), 'hourly', 'fix_missed_schedule_hook');
    }
}
add_action('fix_missed_schedule_hook', 'publish_missed_scheduled_posts');
function publish_missed_scheduled_posts() {
    global $wpdb;
    $now = current_time('mysql');
    $posts = $wpdb->get_results($wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_status = 'future' AND post_date_gmt < %s",
        $now
    ));
    foreach ($posts as $post) {
        wp_publish_post($post->ID);
    }
}

相关推荐

发表回复

邮箱地址不会被公开。