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',
        ),
    )
);