とても濃いタイトルでした。
Advanced Custom Fieldsプラグインのおかげで、日付/時刻ピッカーフィールド "event_date"を持つカスタム投稿タイプ "event"があります。この日時ピッカーは、UNIXタイムスタンプをデータベースに保存します。私はWP_Queryを使用して、今日または将来のすべてのイベントを取得しようとしています。これは私が今持っているコードです:
$args = Array(
'post_type' => 'event',
'posts_per_page' => -1,
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'key' => 'event_date',
'compare' => '>=',
'value' => intval(strtotime(date('Y-m-d'))),
'type' => 'numeric'
),
);
$query = new WP_Query( $args );
それは過去と未来の全ての出来事を私に与えています。
タイムスタンプは文字列としてデータベースに格納されるので、 'compare' => '> ='は通常は機能しませんが、GoogleやCodexで 'type' => 'numeric'と読んだもの文字列を整数にキャストし、午前0時に今朝の私の値と比較できるようにします。残念ながらそれはうまくいっていないようで、私はその理由を理解していません。
メタクエリで配列の配列を試してください。
$args = Array(
'post_type' => 'event',
'posts_per_page' => -1,
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'event_date',
'compare' => '>=',
'value' => intval(strtotime(date('Y-m-d'))),
'type' => 'numeric'
)
),
);
$query = new WP_Query( $args );
うわー、あなたはこの答えで私の一日を救った、私はtype_priceと呼ばれるカスタム数値フィールドで投稿をフィルターにかけようとしていた、そして私はそのようにそれをしようとしていた:
'meta_query' => array(
array(
'key' => 'type_price',
'value' => array( 0, 500000 ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC',
)),
しかしそれはASCそれをするためにこの方法であるべきです:
array(
'posts_per_page' => -1,
'meta_key' => 'type_price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'type_price',
'value' => array( 0, 500000 ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC',
)
)),
どうもありがとう :)