【WordPress】未来の日時の投稿を公開する方法|予約投稿を無視・wp_insert_post_dataフック

WordPressの投稿や固定ページでは、日時を未来に設定すると「公開」ボタンが「予約投稿」となり、その「予約投稿」を選択すると、指定した日時まで公開はされません。
今回は、その「予約投稿」機能を無視して、投稿で日時を未来に設定した場合でも、強制的に公開する方法となります。
【WordPress】未来の日時の投稿を公開する方法
以下のソースコードは、投稿で日時を未来に設定し「予約投稿」を選択した際に、予約投稿を無視して公開する例となり、functions.phpに記述します。
function my_wp_insert_post_data( $data ) {
if ( $data['post_type'] == 'post' && $data['post_status'] == 'future' ){
$data['post_status'] = 'publish';
}
return $data;
};
add_filter( 'wp_insert_post_data', 'my_wp_insert_post_data' );
wp_insert_post_dataフックについて
上記のwp_insert_post_dataフックは、投稿・固定ページの新規作成時に、その投稿データをデータベースへ追加する直前に実行されるフックとなります。
そのフックではコールバック関数の引数に、投稿のデータが配列で渡されるので、そのデータを変更することで、新規作成時の投稿データを修正できます。
今回の例では、そのwp_insert_post_dataフックを利用し、投稿タイプがpost(投稿)で、投稿ステータスがfuture(予約投稿)となる場合に、投稿ステータスをpublish(公開)に変更しています。
それにより、投稿で日時を未来に設定し「予約投稿」を設定した場合でも、投稿を強制的に公開しています。
投稿ステータスの種類について
投稿ステータスの種類については、以下のリンク先を参考にしてみてください。