web-dev-qa-db-fra.com

Comment faire un wp_query en utilisant "BETWEEN" avec deux meta_values?

Je commence avec Wordpress, j'ai déjà réalisé quelques requêtes, mais celle-ci ... beurk! C'est une douleur pour moi!

Ce que je veux faire est cette partie de la requête:

" ... WHERE "VALUE_THAT_I_WANT" BETWEEN event_start_date AND event_end_date ..."

Où "event_start_date" et "event_end_date" sont des clés méta (je veux utiliser leurs valeurs, pas les miennes!)

C'est ce que j'avais jusqu'ici ..

$tEA = array(
    'post_type' => 'event',
    'meta_key' => $metaKey,
    'orderby' => 'meta_value',
    'order' => $order,
    'posts_per_page' => $postPerPage,
    'meta_query' => array(
        array(
            'key' => $metaKey,
            'value' => $today,
            'compare' => "=",
            'type' => 'DATE'
        ),
        array(
            'key' => '_event_end_time'
        )
    )
);
5
Hor

Cela devrait fonctionner pour vous:

$tEA = array(
    'post_type' => 'event',
    // you dont need meta_key as you use meta_query
    //'meta_key' => $metaKey,
    'orderby' => 'meta_value',
    'order' => $order,
    'posts_per_page' => $postPerPage,
    'meta_query' => array(
        array(
            'key' => $metaKey,
            // value should be array of (lower, higher) with BETWEEN
            'value' => array('START_DATE', 'END_DATE'),
            'compare' => 'BETWEEN',
            'type' => 'DATE'
        ),
    )
);

Notez que START_DATE et END_DATE doivent être au format de date MySQL YYYY-MM-DD

4
Ahmad M

N'a pas testé cela, mais qu'en est-il?

$tEA = array(
    'post_type' => 'event',
    'meta_key' => $metaKey,
    'orderby' => 'meta_value',
    'order' => $order,
    'posts_per_page' => $postPerPage,
    'meta_query' => array(
        array(
            'key' => 'event_start_date',
            'value' => 'VALUE_THAT_I_WANT',
            'compare' => '>='
        ),
        array(
            'key' => 'event_end_date',
            'value' => 'VALUE_THAT_I_WANT',
            'compare' => '<='
        ),
        array(
            'key' => '_event_end_time'
        )
    )
);

Je ne suis pas sûr si vous aviez besoin de l'autre comparer, si vous le faites, ajoutez-le simplement: P

1
Toni Michel Caubet