Como fazer uma wp_query usando “BETWEEN” com dois meta_values?

Estou começando com WordPress, já consegui algumas consultas, mas esta … ugh! Está sendo uma dor para mim!

O que eu quero fazer é esta parte da consulta:

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

Onde “event_start_date” e “event_end_date” são meta-chaves (eu quero usar seus valores, não o meu!)

Foi o que eu tive até agora …

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

Solutions Collecting From Web of "Como fazer uma wp_query usando “BETWEEN” com dois meta_values?"

Isso deve funcionar para você:

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

Observe que START_DATE e END_DATE devem estar no formato de data do MySQL YYYY-MM-DD

Não testou , mas e quanto a isso?

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

Eu não tenho certeza se você precisou da outra comparação, se você fizer isso, basta prependê-lo: P

Desde o WP 3.7 você pode passar ‘date_query’ como um argumento.

Exemplo que retorna mensagens de 1º de janeiro a 28 de fevereiro:

 $args = array( 'date_query' => array( array( 'after' => 'January 1st, 2013', 'before' => array( 'year' => 2013, 'month' => 2, 'day' => 28, ), 'inclusive' => true, ), ), 'posts_per_page' => -1, ); $query = new WP_Query( $args ); 

Código tirado de https://codex.wordpress.org/Class_Reference/WP_Query