web-dev-qa-db-fra.com

WP_Query () affiche les messages qui se terminent plus tard qu'aujourd'hui

J'ai une requête comme suit:

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

Je souhaite afficher uniquement les publications du type de publication de véhicule ayant la méta clé end_date qui contient une date postérieure à la date du jour.

Comment cela peut-il être accompli?

4
Sweepster

Tout d’abord, votre format de date doit être dans l’ordre décroissant, de la plus grande à la plus petite unité, c’est-à-dire: année, mois, jour, heure, minute, seconde, etc. Sinon, MySQL ne peut ni interroger ni commander sur le terrain. Dans cet exemple, j'utilise année - mois - jour:

$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 a ajouté Date Queries in 3.7. Donc, vous pouvez toujours essayer:

$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 );

Pour plus d’informations, consultez la page https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

1
Eric K