Cum să obții rezultat din meta_query() între două numere în WordPress

24 ian. 2016, 15:03:32
Vizualizări: 17.9K
Voturi: 7

Am valori de genul:

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];
    }
}

Acum trebuie să caut pentru a obține toate datele între aceste două valori.

Am încercat în felul acesta, dar ia doar o valoare.

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

Cum pot să caut folosind ambele valori?

0
Toate răspunsurile la întrebare 1
3
15

Mai multe valori meta pot fi comparate cu BETWEEN folosind o valoare de tip array:

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

Puteți vedea acest lucru în Documentația pentru Dezvoltatori.

24 ian. 2016 15:53:04
Comentarii

în cazul 2,2.9 și 3,3.9 cum se trec cele 2 valori?

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

În cazul meu a trebuit să trec $first_val și $second_val prin floatval() pentru a funcționa.

rAthus rAthus
13 nov. 2018 18:46:53

Pentru cei care analizează această soluție și se întreabă de ce meta_query nu funcționează, asigurați-vă că aveți matrice imbricate (array( array( ... ))) în meta_query. Să nu mă întrebați cât timp mi-a luat să observ această parte...

armadadrive armadadrive
22 apr. 2020 23:20:47