WordPress 定时发布失败的解决办法

加大发布文章时间设置值

打开 WordPress 程序的根目录, 找到 wp-includes 目录下面的 cron.php 系统文件,找到“timeout”代码,将默认设置发布文章的时间,修改为大于0.01 的值,比如 2.00、3.00 等。(注意,请备份这个文件后再修改。)

$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,
/** This filter is documented in wp-includes/class-wp-http-streams.php */
'sslverify' => apply_filters( 'https_local_ssl_verify', false ),
),
),
$doing_wp_cron
);

WordPress 默认设置发布文章的时间为0.01,当我们定时发布时在这个秒段是无法成功的,所以要失败

添加修复代码到当前主题的 functions.php 文件中

if (!function_exists( 'add_action' ) ) {
header( 'Status 403 Forbidden' );
header( 'HTTP/1.0 403 Forbidden' );
header( 'HTTP/1.1 403 Forbidden' );
exit();
}​

function wpms_log() {
echo"\n";
}​
add_action( 'wp_head', 'wpms_log' );
add_action( 'wp_footer', 'wpms_log' );

define( 'WPMS_DELAY', 5 );
define( 'WPMS_OPTION', 'wp_missed_schedule' );

function wpms_replace() {
delete_option(WPMS_OPTION);
}​

register_deactivation_hook(__FILE__,'wpms_replace');
function wpms_init() {
remove_action('publish_future_post','check_and_publish_future_post');
$last=get_option(WPMS_OPTION,false);
if (($last!==false)&&($last>(time()-(WPMS_DELAY*60))))return;
update_option(WPMS_OPTION,time());
global$wpdb;
$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");
if (!count($scheduledIDs))return;
foreach($scheduledIDs as$scheduledID) {
if (!$scheduledID)continue;
wp_publish_post($scheduledID);
}​
}​
add_action( 'init', 'wpms_init', 0 );

你也可以将上面的代码复制到一个 php 文件里,放到主题的根目录下引用,比如叫 timeout.php,然后在 functions.php文件中引入,以保持主题 functions.php 文件的整洁。

/**
* 定时发布失败修复
*/
require get_template_directory() . '/timeout.php';

使用 Missed Scheduled Posts Publisher 插件

其实第二种方法的修复代码,就是提取自 WP Missed Schedule 插件的,但这个插件已经很久没有更新了,与新版 WordPress 会兼容问题,因此我选择了具备相同功能的 Missed Scheduled Posts Publisher by WPBeginner 插件。

此插件由国外初学者最大的 WordPress 资源网站 WPBeginner 团队开发,他们拥有多个热门插件,比如 最好的 WordPress SEO 插件 All in One SEO,最受欢迎的 WordPress SMTP 插件 WP Mail SMTP 等,技术是绝对过得硬的。

WordPress 官网下载:https://wordpress.org/plugins/missed-scheduled-posts-publisher/

我们可以直接在网站后台 插件 - 安装插件,在搜索框中键入插件名称搜索安装。

安装后,激活插件即可。该插件开箱即用,没有可供你配置的设置。

Missed Scheduled Post Publisher 插件如何工作?

该插件仅每15分钟检查一次你的网站,以查看预定的 WordPress 文章是否错过了时间表。如果找到任何错过的计划项目,则它将状态从计划状态更改为已发布。

它适用于文章,页面,产品以及你在 WordPress 网站上可能具有的任何其他自定义文章类型。

解决 WordPress 计划发布文章失败的错误

消息盒子
# 您需要首次评论以获取消息 #
# 您需要首次评论以获取消息 #

只显示最新10条未读和已读信息