meta_compare, по -видимому, рассматривает значения как строки вместо целых чисел, как и ожидалось

wordpress.stackexchange https://wordpress.stackexchange.com/questions/3737

Вопрос

Попытка использовать 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) эти пользовательские поля следующим образом:

  1. 9000000
  2. 900
  3. 8500000
  4. 750
  5. 600
  6. 15000

Я бы хотел, чтобы они были заказаны (DESC) следующим образом:

  1. 9000000
  2. 8500000
  3. 15000
  4. 900
  5. 750
  6. 600

Я здесь что -то не так?

Это было полезно?

Решение

Смотрите этот вопрос и мой ответ там Query_posts -> Использование meta_compare / где значение meta меньше или выше или равно…

В основном с целью значения мета -сравнения всегда рассматривается как строка, потому что она передается как таковая $wpdb->prepare() метод

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top