meta_compare semble être le traitement des valeurs sous forme de chaînes au lieu d'entiers comme prévu

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

Question

Essayer d'utiliser meta_compare comme suggéré dans le codex :

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

Voici mon code:

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
)

);

J'utilise array_merge persister la requête initiale. Donc, je ne pouvais pas tout à fait comment utiliser la syntaxe suggérée ( « & name = value ») pour meta_compare et meta_value. Quoi qu'il en soit, dans mon code le meta_value semble être traité comme une chaîne et non un entier comme prévu.

Voici un exemple de certains champs personnalisés prix typiques de mes messages personnalisés:

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

Si ce n'est pas un problème de chaîne, il se pourrait que WordPress est commande (Asc) ces champs personnalisés comme suit:

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

Je les aime à commander (Asc) suit comme:

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

Ai-je fait quelque chose de mal ici?

Était-ce utile?

La solution

Voir cette question et ma réponse il query_posts -> à l'aide meta_compare / où la valeur de méta est plus petite ou plus ou égale à ...

En fait le but de la valeur méta de comparaison est toujours traitée comme une chaîne, car il est passé en tant que telle méthode $wpdb->prepare().

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top