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

最近将【知行拾贝】的内容整合进了本站中,列为“节日”分类,因为有些内容是可预知的,所以就提前整理好文章定时发布,但每篇都是“定时发布失败”,WordPress 的定时发布功能好看不好用。

网友们都说大多数定时发布文章失败的原因是主机访问速度慢,发布超时造成的,也有说插件冲突造成。按某位技术君的说法是:

通常,当你安排要在以后发布 WordPress 文章时,WordPress 使用一种称为“ Cron”或“ WordPress Cron ”的技术来按时自动发布你的文章。但是,如果你的 WordPress 托管服务器或插件正在影响 Cron 作业,则 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 计划发布文章失败的错误

如果安装该插件后不能立即解决你网站上的定时发布错误,那么你可以尝试以下一些技巧。

1、检查你的 WordPress 时区设置

设置时区是安装 WordPress 之后要做的第一件事。但是,有时用户会错过它,而他们的 WordPress 时区与他们要用于发布和管理其网站的时区不匹配。

只需转到设置»常规页面,然后向下滚动到“时区”部分。从这里,您需要选择你的时区或要用于WordPress网站的时区。不要忘记单击“保存更改”按钮来存储你的设置。

2、清除 WordPress 缓存

如果你的 WordPress 文章仍然缺少日程安排,则可能是由于缓存插件配置不正确所致。尝试清除 WordPress 缓存,并确保正确配置了 WordPress 缓存插件以定期自动清除缓存。

3、增加 WordPress 内存限制

你的 WordPress 网站可能会遇到内存不足问题。你可以通过允许 WordPress 使用更多服务器内存来解决此问题,从而使 WordPress 更好地运行。

只需将以下代码添加到你的 wp-config.php 文件中。

define('WP_MEMORY_LIMIT', '500M');

小编使用体验

方法一和方法二都存在一个更新升级的问题,当你对 WordPress 程序或主题进行更新后,所作的修改都会被清除,你需要再次修改添加代码。方法三倒是能解决更新后失效的问题,但有些朋友担心过多的插件会影响网站的速度和稳定性。

本站采用方法三,目前安装启用 Missed Scheduled Posts Publisher 插件后,定时发布文章终于正常。


历史上的今天:

相关推荐

如何解决更新 WordPress 需要访问您网页服务器的权限问题?

网站提示有 WordPress 更新可用,但在线更新时却提示:要执行请求的操作,WordPress需要访问您网页服务器的权限。请输入您的 FTP 登录凭据以继续。 我输入 FTP 登录用户名和密码,网页无响应。我猜测会否主机名错误了,就填写了 FTP 地址,仍然是错误的。 网络搜索了一下,有网友遇到相同问题,给出的解决办法是,在 Wor ...

WordPress 在线更新失败,原因竟是 cURL 组件出了错

我有更新升级程序的执念,看到有新版而不能更新,心里会特别纠结。但我的 WordPress 程序和主题、插件,近半年多来一直不能在线更新,让我特别的不爽。 之前认为是网络访问的问题,由于 wordpress.org 网站在国外,很容易会被屏蔽,使用 WP-China-Yes 插件就解决了。详见(WordPress 更新插件出现"下载失败。cURL error ...

WordPress 更新后,回收站文章不见了怎么办?

我原来有篇文章发布后,因不合时宜,被网警蜀黎劝删了,我就放到了回收站中。也不知是从哪次 WordPress 更新升级后,“所有文章”栏目下,“回收站”的链接不见了,更别说回收站中的文章了。 我记得文章是6月份删除的,年前还在的。应该是安装了“计划任务”插件 WP Crontrol 后,在执行了几次同步任务后,不知触发了什么函数 ...

如何让 WordPress “图片”小工具的图片居中显示?

用 WordPress 博客程序架设网站时,我们经常会在侧边栏展示一些图片,WordPress 提供了“图片”小工具组件,可以让用户便捷地添加一张图片,并加上链接地址,实现重点推荐精品文章的功能。 但当小工具组件中展示的图片比侧边栏宽度小时,WordPress 默认是靠左排列图片的,有时会影响页面的美观。 那么,有什么让 WordPress ...

2 条评论

  1. 我的定时发布很好用。正好手里有一批文章,每天定时发布一篇,排到了明年的五月份。
    定时发布的功能太好了。

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。