2つのカスタムmeta_keysの値に対して投稿をクエリしようとしています...
'_mdjm_event_date'はY-M-D(2015-05-13)、 '_mdjm_event_finish'はH:i:s(23:35:00)
これが私の質問です...
$args = array(
'posts_per_page' => -1,
'post_type' => MDJM_EVENT_POSTS,
'post_status' => 'mdjm-approved',
'meta_key' => '_mdjm_event_date',
'meta_value' => date( 'Y-m-d' ),
'meta_compare' => '<=',
'meta_type' => 'date',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => '_mdjm_event_finish',
'value' => date( 'H:i:s' ),
'compare' => '>',
'type' => 'numeric',
),
),
);
私が返そうとしているのは、今日以前のイベントの日付を持つすべての投稿です。イベントの日付が今日の場合、終了時刻は現在の時刻より短くなければなりませんが、上記のコードでは望ましい結果が得られません。基準を満たすイベントは8つありますが、返されるイベントは2つだけです。
どんな助けにも感謝
ありがとう
古いメタ構文と新しいメタ構文を混同しています。読みやすさと将来の互換性のためにこれをクリーンアップすることをお勧めします。 (WordPressは混合クエリを正しく解析しているようですが)
$args = array(
'posts_per_page' => -1,
'post_type' => MDJM_EVENT_POSTS,
'post_status' => 'mdjm-approved',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => '_mdjm_event_date',
'value' => date( 'H:i:s' ),
'compare' => '<=',
),
array(
'key' => '_mdjm_event_finish',
'value' => date( 'H:i:s' ),
'compare' => '>'
),
),
);
もう1つ変更したのは、日付値の数値への型キャストです。私はそれがあなたの質問をつまずかせたことを確信しています。 MySQLコンソール(PHPAdmin、コマンドラインなど)でSELECT CAST('23:20:36' as signed)
を実行した場合は、 "23"が返されることがわかります。それは一致しないでしょう。