Obtener resultados de meta_query() entre dos números

24 ene 2016, 15:03:32
Vistas: 17.9K
Votos: 7

Tengo valores como:

if ( ! empty( $_GET['filter-area'] ) ) {
    $f = $_GET['filter-area'];
    preg_match_all('!\d+!', $f, $matches);
    foreach($matches as $key) {
        $first_val = $key[0];
        $second_val = $key[1];
    }
}

Ahora necesito buscar para obtener todos los datos entre estos dos valores.

Así que intenté de esta manera, pero solo toma un valor.

if ( ! empty( $_GET['filter-area'] ) ) {
    $meta[] = array(
        'key'       => REALIA_PROPERTY_PREFIX . 'attributes_area',
        'value'     => $first_val,
        'compare'   => '>=',
        'type'      => 'NUMERIC',
    );
}

¿Cómo puedo buscar por dos valores?

0
Todas las respuestas a la pregunta 1
3
15

Se pueden comparar múltiples valores meta con BETWEEN usando un valor de tipo array:

'meta_query' => array(
    array(
        'key'     => REALIA_PROPERTY_PREFIX .'attributes_area',
        'value'   => array( $first_val, $second_val ),
        'type'    => 'numeric',
        'compare' => 'BETWEEN',
    ), // array interno.
), // array externo.

Puedes ver esto en la Documentación para Desarrolladores.

24 ene 2016 15:53:04
Comentarios

en el caso 2,2.9 & 3,3.9 ¿cómo pasar 2 valores?

Ravi Patel Ravi Patel
28 feb 2018 15:05:30

En mi caso tuve que pasar $first_val y $second_val en floatval() para que funcionara.

rAthus rAthus
13 nov 2018 18:46:53

Para cualquiera que vea esta solución y se pregunte por qué su meta_query no funciona, asegúrate de tener arrays anidados (array( array( ... ))) en meta_query. No me preguntes cuánto tiempo me llevó notar esa parte...

armadadrive armadadrive
22 abr 2020 23:20:47