meta_compare, по -видимому, рассматривает значения как строки вместо целых чисел, как и ожидалось
-
16-10-2019 - |
Вопрос
Попытка использовать meta_compare Как предполагается в кодексе:
query_posts('meta_key=miles&meta_compare=<=&meta_value=22');
Вот мой код:
global $wp_query;
query_posts(
array_merge(
array(
'category__and' => $mycatsarray,
'meta_key' => 'price',
'meta_compare' => '>=',
'meta_value' => 8500000,
'orderby' => meta_value_num,
'order'=>DESC
),
$wp_query->query
)
);
Я использую array_merge, чтобы сохранить оригинальный запрос. Поэтому я не мог понять, как использовать предложенный синтаксис ('& name = value') для meta_compare и meta_value. В любом случае, в моем коде Meta_Value, кажется, рассматривается как строка, а не целое число, как и ожидалось.
Вот пример некоторых типичных цен на пользовательские цены из моих пользовательских сообщений:
- 8500000
- 600
- 15000
- 900
- 750
- 9000000
Если это не проблема строки, возможно, что WordPress заказывает (DESC) эти пользовательские поля следующим образом:
- 9000000
- 900
- 8500000
- 750
- 600
- 15000
Я бы хотел, чтобы они были заказаны (DESC) следующим образом:
- 9000000
- 8500000
- 15000
- 900
- 750
- 600
Я здесь что -то не так?
Решение
Смотрите этот вопрос и мой ответ там Query_posts -> Использование meta_compare / где значение meta меньше или выше или равно…
В основном с целью значения мета -сравнения всегда рассматривается как строка, потому что она передается как таковая $wpdb->prepare()
метод