WordPress 文章定时发布失败的解决方法

菜鸟品网
1

因为“阿里客栈”网站要发多篇文章,用到 WordPress 的文章定时发布功能,结果显示发布失败,不知从什么时候起这个不可用了。

网上一搜索,竟是普遍问题,也提供了多个解决方案,选择了一种,试验有效,特记录一下。毕竟 WordPress 更新升级频繁,我们更换主题也是常事,这种修改源代码的方式一升级就失效了。

新建一个 timeout.php 文件,内容如下:

<?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<!–Plugin WP Missed Schedule 2011.0920.2011 Active–>”;
}
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)
?>

将文件放到主题的inc目录下,然后 functions.php 文件中插入如下代码:

require get_template_directory() . ‘/inc/timeout.php’;

然后发布定时文章吧,测试成功。

解决方案来自 CSDN 博客,要说明的是,timeout.php 文件的代码,其实就是 WP Missed Schedule 里面的代码,

一条评论

发表评论

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

菜鸟品网
9
纯代码部署 WordPress 博客侧边栏“网站统计”功能

发现有些用 WordPress 博客程序架设的网站会有个“网站统计”模块,列出了建站时间、运行天数、文章数目、浏览次数,及最后更新时间等信息,觉得还是挺实用的,于是也准备给自己的网站添加一个。 当然, …

菜鸟品网
8
Win10系统下如何将视频投影到智能电视?

现在家里的电视基本是智能电视,除了自带的娱乐应用,一般都是外接网络机顶盒来拓展,比如点播最新的电影,不过,资源总比不过电脑连接网络来的多。 所以今天我们要尝试着把电脑上的视频投影到智能电视上,如果你使 …

菜鸟品网
9
如何关闭微信朋友圈?

不知从什么时候起,我们似乎不太愿意更新微信朋友圈了。从一开始的什么都发朋友圈,到有选择地发一些内容,到最后不想再发朋友圈,是新奇感的消失,是怕别人说矫情,是不想让领导知道自己的私人生活,可能都有一些吧 …