为什么WordPress定时发送总是失败?

因为自己不是一个全职站长,只是业余爱好者,不能够天天写文章更新博客,所以就要用到Wordpress的定时发送功能,这样可以每天更新文章,但是最近发现日新博客Wordpress定时发送总是失败?我也不知道什么原因造成的,日新轻博客的定时发送功能是正常的。

为什么Wordpress定时发送总是失败?

我这个业余站长不清楚什么原因,我想大概是因为经常安装和卸载一些插件,总成worpress一些函数不正确了,从而影响了定时发送功能,那么应该怎么解决定时发送失败呢?我通过百度搜索来解决这个问题。下面是从百度搜索中摘录的解决方法。

定时发布文章失败原因及对策

找到wordpress程序的根目录,找到wp-includes文件夹里的cron.php,将此文件下载到本地,注意备份这个文件后再修改!打开cron.php文件,查找 'timeout' =>

 

$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 );
 
	wp_remote_post( $cron_request['url'], $cron_request['args'] );
}

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

解决方法:

1、把上述值修改为大于0.01的值,比如2.00,3.00,等等

2、安装使用WP Missed Schedule插件,安装即可,不需要设置。

3、调取插件WP Missed Schedule的函数代码,引入添加到 functions.php 的最后面即可

注意!!

通过测试,只有插件或下面的第三种方法成功!

不想安装插件的话,你可以把3中的代码复制到一个php文件里放到主题的根目录下,比如叫 timeout.php,然后在 functions.php这样引入就OK了!

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

4、修改数据库里post_status字段来解决wordpress定时发布失败的问题

这个方法需要你对mysql足够的熟悉,那么可以进行这种方法的操作,但如果你是新手的话,我不建议你使用,毕竟造成数据库的丢失,可是大问题!方式就是:到mysql的结构里找到wp_posts表里的post_status字段,将 inherit 修改为publish

直接SQL的写法是:操作慎重!

update wp-posts setpost_status=REPLACE(post_status,’inherit’,'publish’);

重要说明:

1、如果你的服务器是在国外,要先在“设置”-“常规”中将时间格式设置一下,我们国内的时间是UTC+8。

2、时间是按服务器的时间来算的,不是本地电脑时间,所以有可能会有几分钟误差。最好先测试一下几分钟后的定时,看着它定时发布/更新一篇文章。

3、如果想要取消定时发布功能,依次点击状态后的【编辑】按钮,选为草稿【保存】。

4、第一种办法在每次更新wp后都要重新设置,第四种风险大,一定要备份数据库!!!如果你的WP使用的插件不太多,建议安装插件WP Missed Schedule

5、如果你修改了文章内容,直接点击【更新】按钮就可以了,不会影响定时发布的。

以上内容是从百度搜索过来的,我还没有测试,从文章中我知道第一种方法可能不会成功,通过测试,只有插件或下面的第三种方法成功!那么说明安装插件解决这个问题是最简单的一条路,不过wordpress因为插件变得越来越臃肿了,很多人不喜欢插件法,那么可以通过第三种方法来解决,但是我发现文章中提供的timeout.php已经无法下载了,所以不知道怎么解决了?

另外上述的解决方案可能对于老版本的wordpress有效,或者WP Missed Schedule这款插件失效了,我没有试过,我又继续搜索百度,有人提到使用 WP Missed Schedule Posts 或者试试添加代码到 functions.php 的最后。

<?php if(!function_exists('add_action')){ header('Status 403 Forbidden');header('HTTP/1.0 403 Forbidden');header('HTTP/1.1 403 Forbidden');exit();} ?>
<?php
 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')
?>
<?php 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) ?>

为什么WordPress定时发送总是失败?:等您坐沙发呢!

发表评论

表情
还能输入210个字