meta_compare semble être le traitement des valeurs sous forme de chaînes au lieu d'entiers comme prévu
-
16-10-2019 - |
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:
- 9000000
- 900
- 8500000
- 750
- 600
- 15000
Je les aime à commander (Asc) suit comme:
- 9000000
- 8500000
- 15000
- 900
- 750
- 600
Ai-je fait quelque chose de mal ici?
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()
.