meta_compare scheint Werte als Zeichenfolgen statt Ganzzahlen wie erwartet zu behandeln
-
16-10-2019 - |
Frage
Versuch, Meta_Compare zu verwenden Wie im Codex vorgeschlagen:
query_posts('meta_key=miles&meta_compare=<=&meta_value=22');
Hier ist mein 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
)
);
Ich verwende Array_Merge, um die ursprüngliche Abfrage zu bestehen. Ich konnte also nicht ganz herausfinden, wie man die vorgeschlagene Syntax ('& name = value') für meta_compare und meta_Value verwendet. Wie auch immer, in meinem Code scheint der meta_value wie eine Zeichenfolge und nicht wie erwartet behandelt zu werden.
Hier finden Sie ein Beispiel für einige typische Preis -Custom -Felder aus meinen benutzerdefinierten Beiträgen:
- 8500000
- 600
- 15000
- 900
- 750
- 9000000
Wenn es sich nicht um ein String -Problem handelt, kann es sein, dass WordPress diese benutzerdefinierten Felder wie folgt bestellt:
- 9000000
- 900
- 8500000
- 750
- 600
- 15000
Ich möchte, dass sie wie folgt bestellt werden (Desc):
- 9000000
- 8500000
- 15000
- 900
- 750
- 600
Mache ich hier etwas falsch?
Lösung
Sehen Sie sich diese Frage und meine Antwort dort an query_posts -> Verwenden von meta_compare / wobei der Metawert kleiner oder höher ist oder gleich…
Grundsätzlich wird zum Zweck des Meta -Vergleichswerts immer als Zeichenfolge behandelt, da er als solches an übergeben wird $wpdb->prepare()
Methode.