start_date と end_date のカスタム フィールドを含むカスタム投稿タイプ「イベント」があります。今後のイベントの簡単なリストを作成しようとしています。start_date >= 今日のイベントのみをクエリすると、正常に動作します。end_date <= 今日のすべてのイベントを「AND」するために meta_query を追加すると、何も返されません。
カスタム フィールド (start_date、end_date) は UNIX タイムスタンプとして保存されているため、'NUMERIC' と 'meta_value_num' を使用しています。$today は、現在の日付のタイムスタンプです。ここに私がやろうとしていることの例があります... 髪を引っ張る - どんな助けも大歓迎です!
これは機能します:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'start_date',
'value' => $today,
'compare' => '>=',
'type' => 'NUMERIC',
),
)
);
meta_query の 2 番目の配列を追加すると、動作しません:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'start_date',
'value' => $today,
'compare' => '>=',
'type' => 'NUMERIC',
),
array(
'key' => 'end_date',
'value' => $today,
'compare' => '<=',
'type' => 'NUMERIC',
),
)
);
メインクエリでmeta_compareを使用し、単一のmeta_queryを使用すると、機能しません:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'meta_value_num' => $today,
'meta_compare' => '>=',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'end_date',
'value' => $today,
'compare' => '<=',
'type' => 'date',
),
)
);
メインクエリで meta_compare を使用し、複数の meta_queries を使用すると、機能しません:
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'meta_value_num' => $today,
'meta_compare' => '>=',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'start_date',
'value' => $today,
'compare' => '>=',
'type' => 'NUMERIC',
),
array(
'key' => 'end_date',
'value' => $today,
'compare' => '<=',
'type' => 'NUMERIC',
),
)
);