Wie Sie wissen, gibt es ab WP3.0 Optionen für benutzerdefinierte erweiterte Abfragen, was großartig ist. Ab diesem Zeitpunkt wurden einige Abfrageparameter von benutzerdefinierten Feldern wie meta_key und meta_value für den neuen meta_query-Parameter verworfen ( siehe hier ).
Ich versuche, eine ziemlich einfache Abfrage mit der neuen Syntax zu haben. Fragen Sie Posts nach einem bestimmten post_type (services) ab, der einen angegebenen meta_key (order_in_archive) enthält - dies läuft erwartungsgemäß gut. Aber - ich möchte die Abfrage nach dem meta_value ordnen, ohne Erfolg.
Das ist meine Frage -
query_posts(
array( 'post_type' => 'services',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_query' => array(
array('key' => 'order_in_archive'))
)
);
Ich habe orderby auch von meta_value_numeric und meta_value ausprobiert, aber in jedem Fall werden die Ergebnisse nach dem Veröffentlichungsdatum sortiert (wie bei regulären Posts). Weiß jemand, wie das geht?
Vielen Dank
quelle
Der WP-Codex ist tatsächlich verwirrend, wenn es darum geht, dieses Problem zu beheben.
Sie benötigen den meta_query-Parameter nicht wirklich, um orderby zu verwenden, sondern den meta_key-Parameter, der hier festgelegt wurde, obwohl er vom WP Codex veraltet ist: Wie verwenden Sie orderby mit meta_query in Wordpress 3.1? dieser orderyby benötigt noch den meta_key.
so sollte es sein
quelle
Es ist einfach:
Hier ist mein Code:
Das
meta_key
Hauptdetail ist: include , mein Code wurde nur bestellt, wenn ermeta_key
enthalten ist, und das ist alles:Hier ist der vollständige Code einer Liste von
directors
Bildern, sortiert nachdirector_weight
:quelle
Verwenden Sie keine query_posts.
Verwenden Sie die WP_Meta_Query-Parameter
quelle
Ich fand das ziemlich gut.
quelle
meta_query
Parameter und eine immerorderby
mit ihm zu arbeiten, und nicht über die älteren , aber noch funktionsfähigmeta_key
/meta_value
Parameter. Lassen Sie uns auch nicht die Verwendung von fördernquery_posts
.Ich hatte eine Reihe von benutzerdefinierten Terminen, die ich nach Datum absteigend sortieren musste. Da mein benutzerdefiniertes Ereignisdatum in meiner Tabelle "wp_postmeta" gespeichert war und sich normalerweise von dem Datum "post_date" oder dem Änderungsdatum unterschied, funktionierte Folgendes für mich:
Sie können dann $ posts wie folgt durchlaufen:
quelle
Diese Arbeit für mich,
Wird nur benötigt, um den Schlüssel für die order_clause bereitzustellen
quelle