WordPressで未来の日付の記事を公開状態にすることってできないの?

「functions.php」にコードを記述して状態を上書きしてやれば可能だ。

WordPressでは、記事の公開日付を未来に設定することで、指定の日付になったときに自動的に公開を行う「予約投稿」を行える。しかし、未来の日付を指定すると強制的に予約投稿になってしまうので、未来の日付で記事を公開することはできない。
トップページの新着記事一覧の先頭にオススメの記事を表示させ続けたい場合、未来の日付を指定すれば手軽に実現できそうな気がするが、この仕様のために実現できなくなっている。
しかし、「functions.php」にフィルタ処理を記述して、保存される直前のデータを上書きしてやれば、未来の日付で記事を公開することも可能だ。予約投稿が使えなくなってしまうと不便なので、一旦公開状態にしてから未来の日付に変更した場合に公開状態のままになるという挙動にしておくといいだろう。


001

「公開日時」に未来の日付を指定すると、「公開」ボタンが「予約投稿」ボタンになり、ボタンを押すと「ステータス」が「予約済み」の状態で保存される。
公開済みの記事の日付を未来にしようとした場合も、未公開の状態になってしまうので注意が必要だ。


function publicfuturepost($data,$posted){
	if($posted['original_post_status']=='publish' && $data['post_status']=='future'){
		$data['post_status']='publish';
	}
	return($data);
}
add_filter('wp_insert_post_data','publicfuturepost',10,2);

未来の日付で記事を公開できるようにしたければ、テーマファイルディレクトリにある「functions.php」に上記のようなコードを追加しよう。


002

このフィルタを導入した状態で、一旦公開状態にした記事の公開日時を未来の日付にして「予約投稿」ボタンを押すと、公開済みの状態のままで未来の公開日時を設定できるぞ。
下書きの状態からなら通常通りに予約投稿が可能だ。一度公開した記事を予約投稿したい場合は、一旦「ステータス」を「下書き」にしてから再度予約投稿しよう。

2016年04月22日 19時03分
©教えて君.net All Rights Reserved.