投稿を現在の日付とリンクさせて自動に表示・非表示にしたいなぁ・・・
というわけで今回はメタクエリを使用して、現在日付と投稿をリンクさせる方法についてご紹介します。
目次
現在日付と投稿をリンクさせる方法
まず、今回やりたいことを簡単に説明いたします。
・TOPページに投稿のサムネを2件表示させたい
・表示させる2件はカテゴリー「event」のついた投稿のみ
・カスタムフィールドでイベントの開催日を「日付選択ツール」で選択できるようにする
・開催日が過ぎたイベントの記事は自動で非表示になるようにしたい
こんな感じです。
ではまず下準備からしていきましょう。
カスタムフィールドで日付選択ツールを使用する
まずは、カスタムフィールドを使用して、それぞれのイベントの開催日を日付選択ツールで
選択できるようにしていきましょう!
フィールドタイプを「日付選択ツール」に設定していただくと、カレンダーから
任意の日付を選択できるようになります。
今回は「oc_date」というフィールド名をつけます。
下準備はこれでOK!次はメタクエリを使用してコードを記述していきます!
メタクエリを使用する
次はメタクエリを使用してカスタムフィールドと現在時刻を紐付けていきます。
さっそくコードを見ていきましょう!
$args = array(
'post_type' => 'post',
'posts_per_page' => 2,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'event',
'meta_query' => array(
array(
'key' => 'oc_date',
'value' => date('Y-m-d'),
'compare' => '>=',
'type' => 'DATE'
)
)
);
前半部分はごく普通の記述ですね!一応、説明を付け加えますと、
'post_type' => 'post', // 投稿タイプを指定します。ここでは通常の「投稿」を対象としています。
'posts_per_page' => 2, // 取得する投稿の数を2件に制限しています。
'orderby' => 'date', // 投稿の日付で並び替えを行います。
'order' => 'DESC', // 日付の降順(新しいものが上)で並び替えます。
'category_name' => 'event', // 特定のカテゴリー名「event」に属する投稿を取得します。
ここまではほぼ毎回のようにしようするクエリ情報かと思います。
では、次は今回のメイン「メタクエリ」の記述をみていきましょう!
'meta_query' => array( // メタクエリを使用して、カスタムフィールドを基準に投稿を絞り込みます。
array(
'key' => 'oc_date', // 'oc_date'というカスタムフィールドの値を使用します。
'value' => date('Y-m-d'), // 現在の日付を取得し、'value'として使用します。
'compare' => '>=', // 比較演算子 '>=' を使用して、現在の日付以上の値を持つ投稿だけを取得します。
'type' => 'DATE' // 'oc_date'フィールドが日付形式であることを指定します。
上記の記述だけでカスタムフィールドで選択した日付と現在日付がリンクして
自動で投稿を非表示にしてくれます。
まとめ
というわけで今回はメタクエリを使用して、現在日付と投稿をリンクさせる方法についてご紹介しました!
色々汎用性もありますので是非覚えてください~