WordPress定時發佈文章/解決定時發佈失效

本文目錄1為什麼要定時發佈文章?2如何定時發佈文章?3定時發佈失效怎麼辦?

WordPress的定時發佈文章的功能是十分有用的,也許你還沒有發現,和一起來認識一下吧。

為什麼要定時發佈文章?

定時按量發佈文章,對於用戶體驗和SEO都有比較大的好處。不少朋友寫部落格都是不太有規律的,有興致的時候,一連發好幾篇文章,沒興致的時候,N舊也不發一篇。你換位思考一下,如果你喜歡並訂閱瞭某個部落格,但是對方發文章很沒有規律,你會不會比較反感?

通常建議的方法是:按時按量發佈文章。比如你一個月大概寫10篇文章,那就盡量3天發佈一篇,而且定在當天的固定時段,比如,一般固定在早上6-7點間。這樣一來,不僅訪客比較容易找到你的規律,就連搜索引擎的蜘蛛也一樣會比較按規律辦事的。

如何定時發佈文章?

在發佈文章的界面右邊的【發佈】選項,點擊一下[立即發佈]右邊的“編輯”,就會出現下圖所示的界面,可以選擇發佈日期和時間,設定後,確定即可:

wpdaxue.com-201211137

如果你使用Windows Live Writer發佈文章,隻需要勾選日期,然後修改時間即可:

wpdaxue.com-201211138

註意:

1、如果你的服務器是在國外,要先在“設置”-“常規”中將時間格式設置一下,我們國內的時間是UTC+8。

2、時間是按服務器的時間來算的,不是本地電腦時間,所以有可能會有幾分鐘誤差。最好先測試一下幾分鐘後的定時,看著它定時發佈/更新一篇文章。

3、如果想要取消定時發佈功能,點擊第一行的狀態:草稿,選擇編輯然後更改為草稿,再點擊更新文章就OK啦。

定時發佈失效怎麼辦?

WordPress默認發佈文章的時間是0.01秒,一旦超過這個時間而沒有發佈成功,定時發佈文章就會失敗。如何解決Wordpress定時發佈失敗呢?下面有兩種方法。

方法一:修改 /wp-includes/cron.php 系統文件

打開wp-includes目錄下面的cron.php文件,找到“timeout”代碼:

1
wp_remote_post( $cron_url, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) );

wp_remote_post( $cron_url, array( ‘timeout’ => 0.01, ‘blocking’ => false, ‘sslverify’ => apply_filters( ‘https_local_ssl_verify’, true ) ) );

將代碼後面的數值0.01修改為比0.01大就可以瞭,也可以修改為10.00。

不是很推薦這種方法,因為WordPress版本更新後,你需要再次修改這個文件。

方法二:使用WP Missed Schedule外掛

下載 WP Missed Schedule ,安裝啟用即可;如果你不想安裝外掛,也可以直接將該外掛的代碼添加到 functions.php 的最後面即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?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)
?>

<?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)
?>

好瞭,從現在開始,規律更新你的部落格吧!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *