Hier ist mein Code
$my_wp_query = new WP_Query();
$all_wp_pages = $my_wp_query->query(array('post_type' => 'page','post_parent'=>$parid,'orderby'=>'title','order'=>'ASC' ));
Es werden nur die Unterseiten der ersten Ebene angezeigt. Ich brauche alle Unterseiten, Unterseiten ... und alles. Ich habe nach einer Lösung gesucht und kann mit get_pages und wp_list_pages alle Unterseiten abrufen.
Aber ich muss die Reihenfolge wirklich nach benutzerdefiniertem Post-Meta-Wert sortieren. Also muss ich benutzerdefinierte Abfrage verwenden.
bitte hilf. Vielen Dank
wp-query
query-posts
query
phpuser
quelle
quelle
Antworten:
Warum nicht einfach benutzen
get_pages()
?z.B
Wenn es sich aber wirklich um ein
WP_Query()
Objekt handeln muss, verwenden Sie eine ähnliche Methode:quelle
WP_Query()
?Das Problem
Was Sie Probleme beim Erfassen haben, ist "Wie mache ich X?" Dies ist keine 1-Schritt-Aktion, sondern ein mehrstufiger Prozess, der getrennt werden muss.
Das brauchen Sie nicht zu tun:
Sie müssen dies tun:
Die allgemeine Lösung
Um zu verstehen, wie man es unendlich macht, bis man das Ende erreicht, ohne es hart zu codieren, muss man rekursive Funktionen verstehen.
z.B
Rekursion auf dieses Problem anwenden Für eine Lösung
Also ist dein Elternteil
$parid
und dein Post-Meta hat einen Schlüssel von$metakey
.Lasst es uns in eine Funktion umwandeln, um seine Kinder zu fassen.
Dann sortieren wir das Array $ children, die Schlüssel sind die Post-IDs und die Werte sind die Meta-Werte.
und lassen Sie uns die Funktion definieren als:
Auf diese Weise erhalten Sie eine Reihe von Beitrags-IDs und Werten, die von der niedrigsten zur höchsten geordnet sind. Sie können andere PHP-Sortierfunktionen verwenden, um von der höchsten zur niedrigsten zu gelangen.
Was ist nun mit den Kindern der Kinder?
In der Mitte unserer Schleife müssen wir einen rekursiven Anruf tätigen und das untergeordnete Element anstelle der übergeordneten ID übergeben.
Also das:
Wird dies:
Mit dieser Änderung ruft die Funktion jetzt die Kinder, die Kinder der Kinder, die Kinder der Kinder ..... etc. ab
Am Ende können Sie die Werte im Array abschneiden, um die folgenden IDs zu erhalten:
Mit dieser Strategie können Sie den Metaschlüsselwert durch eine beliebige andere Metrik ersetzen oder rekursive Funktionen auf andere Weise verwenden.
Da der vollständige Code nur ein paar Sekunden Grundkenntnis und schnelles Einfügen von Texten erfordert, beleidige ich Ihre Intelligenz nicht mit einem Codeblock zum vollständigen Einfügen von Texten.
Vorteile
Probleme, auf die Sie stoßen werden
Meine Empfehlung
Ich würde Ihnen empfehlen, entweder Ihre Seitenhierarchie zu reduzieren oder stattdessen eine Taxonomie zu verwenden. Wenn Sie beispielsweise Posts bewerten, haben Sie eine Seitenbewertungstaxonomie mit den Begriffen 1,2,3,4 und 5 usw. Dadurch erhalten Sie eine sofort einsatzbereite Postauflistung.
Verwenden Sie alternativ die Navigationsmenüs und umgehen Sie dieses Problem vollständig
quelle
Ruft rekursiv alle aktuellen Unterseiten ab
Hier ist ein rekursiver Ansatz mit
get_children
. Geben Sie Folgendes in Ihr Feld einfunctions.php
:Wie man es benutzt
Verwenden Sie die obige Funktion, wo immer Sie möchten, zum Beispiel so:
Die Funktion unterstützt einen
args
Parameter (Abfragezeichenfolge oder Array) und einenoutput
Typ (siehe oben).Sie könnten es also auch so verwenden:
Und aufgrund der Abhängigkeit
get_children
=>get_posts
=> könnenWP_Query
Sie Metawerte verwenden, wie ursprünglich vom Autor dieser Frage angefordert.quelle
Wir sind uns nicht sicher, ob Sie genau danach suchen, aber Sie können die Funktion wp_list_pages verwenden und die Parameter 'child_of' und 'depth' verwenden.
Weitere Informationen finden Sie auf der folgenden Seite im Codex: http://codex.wordpress.org/Function_Reference/wp_list_pages
quelle
Ich habe eine rekursive Funktion erstellt, die alle untergeordneten IDs einer übergeordneten Seite abruft. Nachdem wir die IDs haben, fragen wir nach den Seiten und können die Ergebnisse nach Metaschlüssel / Wert sortieren.
Wenn Sie die untergeordneten Elemente hierarchisch nach Metaschlüssel / -wert sortieren müssen, müssen Sie die Werte meta_key und order_by an WP_Query in der Funktion _get_children_ids übergeben (anstelle der endgültigen WP_Query).
Wenn nicht, ist eine einfachere Methode zum Abrufen der gesamten untergeordneten ID:
quelle
ICH MACHE DIESE ARBEIT, KOPIERE DEN CODE NUR IN DEINE PAGE.PHP-DATEI
quelle
$post -> ID
?), B) nicht, was gefragt wurde, C) nicht sehr gut erklärt.