Meta_Compare parece estar tratando los valores como cadenas en lugar de enteros como se esperaba

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

Pregunta

Intentando usar Meta_Compare Como se sugiere en el códice:

query_posts('meta_key=miles&meta_compare=<=&meta_value=22');

Aquí está mi código:

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
)

);

Estoy usando array_merge para persistir la consulta original. Por lo tanto, no pude descubrir cómo usar la sintaxis sugerida ('& name = value') para Meta_Compare y Meta_Value. De todos modos, en mi código, el meta_value parece ser tratado como una cadena y no como un entero como se esperaba.

Aquí hay un ejemplo de algunos campos personalizados de precio típicos de mis publicaciones personalizadas:

  • 8500000
  • 600
  • 15000
  • 900
  • 750
  • 9000000

Si no es un problema de cadena, podría ser que WordPress esté ordenando (DESC) estos campos personalizados de la siguiente manera:

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

Me gustaría que se les ordenara (DESC) de la siguiente manera:

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

¿Estoy haciendo algo mal aquí?

¿Fue útil?

Solución

Vea esta pregunta y mi respuesta allí query_posts -> usando meta_compare / donde el meta valor es menor o mayor o es igual ...

Básicamente para el propósito del valor de la meta comparación, siempre se trata como una cadena, porque se pasa como tal $wpdb->prepare() método.

Licenciado bajo: CC-BY-SA con atribución
scroll top