Orderby benutzerdefinierte Meta gibt zufällige Reihenfolge zurück

[Beantwortet von Roberthue – Ich sortiere nach Meta-Wert anstelle von Meta-Wert]

Ich habe eine WP_Query erstellt, die Folgendes ausführt:

  • Nimmt eine Liste von Unternehmen zum Verkauf
  • Sortiert sie nach einer Meta-Abfrage, die mit get_query_var aus der URL übernommen wird
  • Verwendet eine Sortierreihenfolge aus der Abfrage var
  • Prüft eine Metaabfrage, um sicherzustellen, dass der Verkaufsposition aktiv ist

Zum größten Teil funktioniert es. Die Meta-Abfrage unterscheidet richtig zwischen aktiven und inaktiven Posts, die Sortierung wird auf- und absteigen, es gibt nur ein Problem … die Daten werden in absteigender Reihenfolge sortiert:

  • 99999
  • 749000
  • 350000
  • 300000
  • 2700000
  • 249000
  • 247000
  • 2000000
  • 1536000
  • 145000

Welp, das ist nicht richtig …

Hier ist meine Frage args:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $listing_args = array( 'post_status' => 'publish', 'post_type' => 'business', 'posts_per_page' => '12', 'meta_key' => get_query_var('orderby'), 'orderby' => 'meta_value', 'order' => get_query_var('order'), 'paged' => $paged, 'meta_query' => array( // Only grab active listings array( 'key' => 'property_active', 'value' => 1, 'compare' => '=' ), ), ); // The Query $businesses = new WP_Query( $listing_args ); 

Soweit ich das beurteilen kann, ist das auch nicht falsch. Die Felder selbst werden von ACF generiert und “numerisch” delegiert.

Ich habe einen kompletten Verlust für Ideen.

Solutions Collecting From Web of "Orderby benutzerdefinierte Meta gibt zufällige Reihenfolge zurück"

Ich fügte dieses hier auch für jemand anderes hinzu, der dasselbe Problem hat.

Wenn Ihre Metawerte numerisch sind, sollten Sie orderby meta_value_num anstelle von meta_value .

Wie in Codex erwähnt .

  • meta_value – Beachten Sie, dass ein meta_key=keyname auch in der Abfrage vorhanden sein muss. Beachten Sie auch, dass die Sortierung alphabetisch ist, was für Strings (dh Wörter) gut ist, aber für Zahlen unerwartet sein kann (zB 1, 3, 34, 4, 56, 6, usw., statt 1, 3, 4, 6, 34, 56, wie Sie natürlich erwarten können). Verwenden meta_value_num stattdessen meta_value_num für numerische Werte.

  • meta_value_num – Reihenfolge nach numerischem Metawert (verfügbar mit Version 2.8). Beachten meta_key=keyname auch, dass in der Abfrage auch ein meta_key=keyname muss. Dieser Wert ermöglicht eine numerische Sortierung wie oben in meta_value .