【wordpress】解决文章定时发布失效

故障:

作为一个技术人员,立志要每天学习,每天总结,博客终究要成为习惯;但毕竟精力有限,不可能每天都有时间去写;

有时可能一次学习了几个知识点,及时写下博文,但又不想一下都发布出去,为了更好的有规律的管理自己的文章,定时发布文章是不可避免的;

但是近来博主发现,自从个人博客发布之后,所有定时发布的文章都没有成功,必须要到后台,手动更新一下,才能发布;

解决方法:

其实问题很简单,网上随意搜索了一下,便找到了答案;

可以参考此文:wordpress大学之解决定时发布失效

定时博文如何发布,想必对于看此文的道友,都不是问题,不然如何失效;

那首先我们了解一下发布失效的原因:事实上WordPress默认给予发布文章的时间是0.01秒,一旦超过这个时间而没有发布成功,定时发布文章就会失败。

但事实上,由于定时发布是需要指令处理的时间,反正就这么理解吧,意思就是0.01秒显然是无法满足正常的定时发布文章;所以解决这个问题,就是加大其给予发布的时间;

方法①:修改 wp站点根目录下的/wp-includes/cron.php 文件;

没错这个php就是处理定时发布文章的文件,找到其中的timeout字段,可以看到后面是0.01s,把它修改成大一点的数值;

$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,--没错我在这里,修改成下面那样吧--*/
           'timeout'   => 10,
           '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后,文件会被覆盖,需要重新修改哦!

方法②:使用插件或是在主题文件中加入function代码;

前者也就是使用WP Missed Schedule插件;后者则是修改主题目录下functions/php文件;

vim wp-content/themes/jinsomB/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大学之解决定时发布失效

Edit@bigmouth【原创博文】®【经验汇总】


原创文章,转载请注明:转自于公牛博客

本文链接地址:【wordpress】解决文章定时发布失效

标签:
8
祝福我们的祖国繁荣昌盛
  • 请尽情挥洒您的笔墨!