【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(公開)に変更しています。

それにより、投稿で日時を未来に設定し「予約投稿」を設定した場合でも、投稿を強制的に公開しています。

投稿ステータスの種類について

投稿ステータスの種類については、以下のリンク先を参考にしてみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。