私は "議題"と呼ばれる投稿タイプを持っています、そしてそのメタ値の1つはイベントの日付です。メタ値に基づいて今年の投稿を取得する方法を教えてください。
私は上記の引数を試してみましたが、うまくいきません。
$args = array( 'post_type' => 'agenda',
'posts_per_page' => -1,
'sort_order' => 'asc',
'meta_query' => array(
array(
'key' => 'date_event',
'value' => date('Y'),
'compare' => '=',
'type' => 'DATETIME'
)
),
'meta_key' => 'date_event',
'meta_type' => 'DATE',
'orderby' => 'meta_value',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'event_type',
'field' => 'term_id',
'terms' => $type_name)
)
);
'date_event'ポストメタフィールドから戻ってきたものによります。
それがおそらくここでの犯人です - それが月と日を含む実際の日付であるならば、それはあなたが日付( 'Y')から得ているものと一致するつもりはない、それは単に '2018'になるでしょう。
次のいずれかの議題の投稿で、 'date_event'の値を確認できます。
print_r(get_post_meta($ post_id、 'date_event'、true));
'date_event'の値がUnixのタイムスタンプの場合は、今年の1月1日から始まるすべての日付を照会することができるため、実際には簡単です。
$first_of_year = strtotime( "1 January " . date( 'Y' ) );
$args = array( 'post_type' => 'agenda',
'posts_per_page' => -1,
'meta_key' => 'date_event',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'date_event',
'value' => $first_of_year,
'compare' => '>=',
).
),
'tax_query' => array(
array(
'taxonomy' => 'event_type',
'field' => 'term_id',
'terms' => $type_name,
)
)
);
Date_eventが20180320のような値を与えているのなら、似たようなことができますが、.
$first_of_year = date( 'Y' ) . '0101';
'2018-03-29'のようなものになっているのであれば、 'type' => 'DATE'を使用する必要があるかもしれませんが、最初の2つの状況のどちらかがあれば、それは不要です。
もう1つ、「sort_order」は有効なパラメータではありませんが、無視されることになります。あなたはとにかく低くした 'order'が欲しいのです。
数値を比較するときは、 'orderby' => 'meta_value'を 'orderby' => 'meta_value_num'に変更することをお勧めします。