isTKS™program,web-design,WordPress ≫ WordPressで予約投稿させないようにする(未来のLIVEスケジュールやイベント情報を掲載)

WordPressで予約投稿させないようにする(未来のLIVEスケジュールやイベント情報を掲載)

2013.09.12

WordPressで予約投稿させないようにする。
たとえば、日付が未来のLIVEスケジュールやイベント情報を掲載するようなケース。

カスタムフィールドを使って、未来のイベント日付を表示させてもいいけど、
投稿日付をそのままイベント日付として利用したい場合、予約投稿機能をオフにしてしまうときはこういう感じ。

テーマファイル内のfunctions.phpに

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

こう書くと、ポスト投稿時に「予約投稿」フラグを強制的に「公開」フラグに上書きして保存してくれる。

もしくはプラグインを使っても未来投稿のオンオフを切り替えができる。

このやり方ではなく、「表示時に未来投稿フラグのデータも取得する」というquery_posts()の書き方をいろいろ試してみたけど、
&post_status=future
をquery_posts()に記載しても、うまく取得できない。
(※SQL文をデバッグしてみると、(post_status=’publish’ OR post_status=’private’)(ログイン時)が入ってきてしまうのでちゃんと取得されないんだろうね)

WordPress本体のquery_posts()内を修正するのはアップデート時に困るので、functions.phpに記載する上記のやり方がベターかな?

  • このエントリーをはてなブックマークに追加