讓WordPress每篇文章的發佈時間至少間隔1小時

作為WordPress多作者部落格,也許你會希望發佈文章的時間不要湊在一起,有一定的時間間隔可能更適合讀者。比如,讓WordPress每篇文章的發佈時間至少間隔1小時,就是一個不錯的做法。

post-publication-spacing-in-minutes-wpdaxue_com

將下面的代碼添加到當前主題的 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
32
33
34
35
//設定每篇文章的發佈間隔 
//From https://www.wpdaxue.com/post-publication-spacing-in-minutes.html
function force_time_between_posts($data, $postarr) {
	global $wpdb;
	if (empty($postarr['ID'])) return $data;
 
	$latest = $wpdb->get_var("
		SELECT post_date
		FROM {$wpdb->posts} 
		WHERE post_status IN('future','publish') 
		AND post_type = 'post' 
		AND ID != {$postarr['ID']}
		ORDER BY post_date DESC
		LIMIT 1");
	$distance = 60; // 時間間隔(分鐘)
	$latest = strtotime($latest);
	$current = strtotime($data['post_date']);
 
	if ($latest < $current) {
		$diff = $current - $latest;
	} else { 
		$diff = 0;
	}
 
	if ($diff >= 0 && $diff < ($distance * 60)) {
		$new_date = $latest + ($distance * 60);
		$date = date('Y-m-d H:i:s',$new_date);
		$date_gmt = get_gmt_from_date($date);
		$data['post_date'] = $date;
		$data['post_date_gmt'] = $date_gmt;
		$data['post_status'] = 'future';
	}
	return $data;
}
add_action('wp_insert_post_data','force_time_between_posts',1,2);

//設定每篇文章的發佈間隔
//From https://www.wpdaxue.com/post-publication-spacing-in-minutes.html
function force_time_between_posts($data, $postarr) {
global $wpdb;
if (empty($postarr[‘ID’])) return $data; $latest = $wpdb->get_var("
SELECT post_date
FROM {$wpdb->posts}
WHERE post_status IN(‘future’,’publish’)
AND post_type = ‘post’
AND ID != {$postarr[‘ID’]}
ORDER BY post_date DESC
LIMIT 1");
$distance = 60; // 時間間隔(分鐘)
$latest = strtotime($latest);
$current = strtotime($data[‘post_date’]); if ($latest < $current) {
$diff = $current – $latest;
} else {
$diff = 0;
} if ($diff >= 0 && $diff < ($distance * 60)) {
$new_date = $latest + ($distance * 60);
$date = date(‘Y-m-d H:i:s’,$new_date);
$date_gmt = get_gmt_from_date($date);
$data[‘post_date’] = $date;
$data[‘post_date_gmt’] = $date_gmt;
$data[‘post_status’] = ‘future’;
}
return $data;
}
add_action(‘wp_insert_post_data’,’force_time_between_posts’,1,2);

以上代碼的 15 行的 60 為時間間隔,你可以根據自己的需要修改,默認為 60 分鐘。

代碼的效果:發佈新文章時,會自動檢測上一篇文章的發佈時間,如果超過60分鐘,就直接發佈,如果小於60分鐘,就自動定時間隔60分鐘發佈。需要註意的是,所檢測的是所有已發佈和定時發佈的文章中的最後一篇。如果最後定時的那篇文章是第二天早上8點,那你後面寫的文章,想定時到第二天早上8點以前都是不允許的,會自動定時為9點。

參考資料:http://wordpress.stackexchange.com/questions/104677

發佈留言