Как получить результат из meta_query() между двумя числами

24 янв. 2016 г., 15:03:32
Просмотры: 17.9K
Голосов: 7

У меня есть значение вида:

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];  // Второе число
    }
}

Теперь мне нужно выполнить поиск, чтобы получить все данные между этими двумя значениями.

Я попробовал так, но это работает только с одним значением.

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

Как можно выполнить поиск по двум значениям?

0
Все ответы на вопрос 1
3
15

Несколько мета-значений можно сравнить с помощью BETWEEN, используя массив значений:

'meta_query' => array(
    array(
        'key'     => REALIA_PROPERTY_PREFIX .'attributes_area',
        'value'   => array( $first_val, $second_val ),
        'type'    => 'numeric',
        'compare' => 'BETWEEN',
    ), // Внутренний массив.
), // Внешний массив.

Вы можете увидеть это в Документации для разработчиков.

24 янв. 2016 г. 15:53:04
Комментарии

как передать значения 2,2.9 и 3,3.9 в случае 2?

Ravi Patel Ravi Patel
28 февр. 2018 г. 15:05:30

В моем случае пришлось передать $first_val и $second_val через floatval(), чтобы это заработало.

rAthus rAthus
13 нояб. 2018 г. 18:46:53

Тем, кто смотрит это решение и задается вопросом, почему ваш meta_query не работает: убедитесь, что у вас есть вложенные массивы (array( array( ... ))) в meta_query. Не спрашивайте, сколько времени ушло, чтобы заметить эту деталь...

armadadrive armadadrive
22 апр. 2020 г. 23:20:47