WordPressで期間限定で記事を表示する方法メモ
大学で所属している団体のサイトを運営しているのですが、そこでイベントの情報を発信していました。その情報はイベントの期間が過ぎたら消したかったのですが、どうすればいいかという問題がなかなか解決出来ず、そんな感じの事をされていたJUSO Coworkingオーナーの@witch_doktorさんに聞いてみました。
管理画面側の設定
これどうやって消す(非表示)んだろうなーってずっと考えていたんですが、表示したものを消すのではなく、そもそも期間外のデータを引っ張ってこないというのが正解でした。(多分)
判別するために投稿にカスタムフィールドで値をもたせます。
※CustomFieldSuiteを使用しています。
画像のように開催日をハイフンなどを抜きで入力しました。
開催日を判別するので、key は invent にしてあります。
テーマ側での処理
カスタムフィールドで設定した値をmeta_queryに指定し該当するものだけ取得する処理を書きます。
参考:query_posts(WP_Queryクラス)でカスタムフィールドを使う:WordPress私的マニュアル
<?php
// 現在の日付け
$now = date('Ymd');
// 引き出す情報の指定(inventの値が現在の時間より大きい(今日から先)のもの)
$args = array(
'meta_query' => array(
array(
'key' => 'invent',
'value' => $now,
'compare' => '>=',
'type' => 'NUMERIC'
)
)
);
$the_query = new WP_Query( $args );
if($the_query->have_posts()) :
while($the_query->have_posts() ) :
$the_query->the_post();
// 以下表示したい記事のテンプレートとか
endwhile;
endif;
?>
これで期日が過ぎたものは表示されなくなります。