WordPressで未来の投稿をいますぐ公開にしたい、予約投稿を解除する方法!

公開日を未来の日付にした場合、予約投稿となり、その日になるまで記事が公開になりません。イベントなど未来の日程でもいますぐ公開したいこともあると思いますので、その方法を書きたいと思います。

スポンサーリンク

functions.phpにコードを追加する

functions.phpに命令を追加することにより、未来の日程でも投稿を公開することができます。

すべての予約投稿を無効にしたい

functions.phpに下記を入れます。

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

カスタム投稿だけ予約投稿を無効にしたい

ただこれだとカスタム投稿などすべての投稿の予約投稿機能が無効になります。
イベントやライブ日程はカスタム投稿を作っていて、未来の日程だけれどいますぐ「公開」にしたい。
でも普通の日記やブログ記事は週末に書きためておいて、予約投稿で設定したい場合もあると思います。
そんなときはfunctions.phpに下記を入れます。「★カスタム投稿名」は、カスタム投稿で設定したカスタム名を入れます。

function stop_post_status_future_func( $data, $postarr ) {
   if ( ( $data['post_type'] == '★カスタム投稿名' && $data['post_status'] == 'future') && $postarr['post_status'] == 'publish' ) :
      $data['post_status'] = 'publish';
   endif;
  return $data;
};
add_filter( 'wp_insert_post_data', 'stop_post_status_future_func', 10, 2 );

参考
【WordPress】未来投稿機能を無効にする方法

プラグイン「No Future Posts」を使う

ブログ記事の中で、ある投稿はすぐ公開したいけれど、ある投稿は、予約投稿にしたいと、記事によって「すぐ公開」と「予約投稿」を分けたい場合もあると思います。
そんな時は、プラグインを使うのがよいと思います。
ただこのプラグインは、設定するとすべての予約投稿が解除になります。
なので、解除されては困る記事のIDを設定欄に入れるという形になります。なんとなくちょっとめんどくさいかもしれませんが、とりあえず。

管理画面の「プラグイン」→「新規追加」の検索フォームに『No Future Posts』と入力し「いますぐインストール」を押します。

「有効化」したら、管理画面の[プラグイン]→「No Future Posts」の設定を押します。

もしくは管理画面の「設定」から「No Future Posts」を押しても同じ画面が開きます。

開くと下記のような画面が出てくると思います。

現状はすべての投稿の予約投稿が解除になります。
Exclude posts IDs :除外したい投稿ID
Exclude categories IDs :除外したいカテゴリID

ここにIDを入れることによって、予約投稿を復活させることができます。
例えばブログ記事であれば、カテゴリで日記とか設定していたらそれをExclude categories IDsに入れれば「予約投稿」が復活します。IDは管理画面のカテゴリを開いてカテゴリ一覧から「カテゴリ名」にマウスを持っていくと下に表示されます。

知りたいねっとの「音楽」は下を見ると、「5」となっていますので、「5」を入れれば、記事を書いたときに、カテゴリに「音楽」を設定すれば、予約投稿が復活して、日にちを予約して、その日に公開するというのが復活します。
逆にここに除外する設定をしないと、未来の日程でも、すぐに投稿が公開されるということになります。

コメントをどうぞ