мета-сравнение, похоже, обрабатывает значения как строки, а не как целые числа, как ожидалось
Попытка использовать 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=значение') для meta_compare и meta_value. В любом случае, в моем коде значение meta_value, похоже, обрабатывается как строка, а не как целое число, как ожидалось.
Вот пример некоторых типичных пользовательских полей цены из мои пользовательские сообщения:
- 8500000
- 600
- 15000
- 900
- 750
- 9000000
Если это не проблема со строками, возможно, WordPress упорядочивает (DESC) эти пользовательские поля следующим образом:
- 9000000
- 900
- 8500000
- 750
- 600
- 15000
Я бы хотел, чтобы они были упорядочены (ОПИСАНИЕ) как следует:
- 9000000
- 8500000
- 15000
- 900
- 750
- 600
Я делаю здесь что-то не так?
1 answers
Смотрите этот вопрос и мой ответ там query_posts ->с помощью meta_compare/ где значение мета меньше или больше или равно...
В основном для целей мета-сравнения значение всегда обрабатывается как строка, потому что оно передается как таковое методу $wpdb->prepare()
.