web-dev-qa-db-ja.com

WP_Query()は、今日より遅く終了した投稿を表示します

私は以下のように質問があります:

$wp_query = new WP_Query( 
   'meta_key'     => 'end_date', 
   'meta_value'   => 'today', 
   'meta_compare' => '>=', 
   'post_type'    => 'vehicle' 
);

今日の日付より後の日付を含むメタキーend_dateを持つ車両投稿タイプの投稿のみを表示します。

どのようにこれを達成することができますか?

4
Sweepster

まず、年、月、日、時、分、秒など、最大から最小の単位に降順で日付形式を指定する必要があります。それ以外の場合、MySQLはフィールドに対してクエリまたは順序を指定できません。この例では、年月日を使用します。

$today = date( 'Y-m-d' );
$args = array(
    'post_type' => 'vehicle',
    'meta_query' => array(
        array(
            'key' => 'end_date',
            'value' => $today,
            'compare' => '>=',
            'type' => 'DATE'
        )
    )
):
$query = new WP_Query( $args );
15
Milo

WordPressは3.7にDate Queriesを追加しました。だからあなたはいつでも試すことができます:

$today = date( 'Y-m-d' );
$args = array(
    'post_type' => 'vehicle',
    'date_query' => array(
        //set date ranges with strings!
        'after' => 'today',
        //allow exact matches to be returned
        'inclusive'         => true,
    ),
);
$query = new WP_Query( $args );

これについての詳細は https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters にあります。

1
Eric K