Ich habe eine benutzerdefinierte Taxonomie von "crb_issues", der ein benutzerdefiniertes Feld zugeordnet ist, nämlich "issue_date", das einen Datumswert für jeden Begriff ausgibt, der dem Jahrmonatstag "20140601" sehr ähnlich sieht.
Ich versuche, alle Taxonomies-Begriffe mit get_terms auszugeben und sie nach diesem benutzerdefinierten Feld zu ordnen. Unten ist der Code, an dem ich gearbeitet habe, der den Namen der Begriffe und den Wert des "issue_date" ausgibt. Es fällt mir jedoch schwer, die Ausgabe nach diesem benutzerdefinierten Feld zu ordnen.
$args = array(
'meta_key' => 'issue_date',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'hide_empty' => true,
'number' => '4',
'fields' => 'all',
);
$terms = get_terms("crb_issues", $args);
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo "<ul>";
foreach ( $terms as $term ) {
echo "<li>" . $term->name . "</li>";
the_field('issue_date', $term);
}
echo "</ul>";
}
Jede Hilfe wäre sehr dankbar.
custom-taxonomy
advanced-custom-fields
order
terms
Phil Hoyt
quelle
quelle
Antworten:
Anstatt Ihre Begriffe in dieser anfänglichen Schleife auszugeben, würde ich sie stattdessen verwenden, um ein neues Array mit Ihrem issue_date als Schlüssel zu erstellen:
Sie können dieses neue Array dann in der folgenden Reihenfolge durchlaufen:
Dies ist ungetestet.
quelle
Eine viel kürzere Lösung, fügen Sie diese einfach vorher hinzu
foreach
:quelle
Ich habe eine ähnliche Methode verwendet, wollte aber mehr Werte aus der Taxonomie speichern als den Namen und den benutzerdefinierten Feldwert, die ich angegeben habe. Daher habe ich sie als gespeichert
object
und eine ähnliche Methode erstellt,array
wie sie tatsächlich zurückgegeben wird, wenn Sie die Funktion verwendenget_terms
.Holen Sie sich Ihre Bedingungen:
Erstellen Sie dann ein neues Array und speichern Sie es anhand meines benutzerdefinierten Feldwerts, der in diesem Fall numerisch war:
Sortieren Sie sie numerisch:
Verwenden Sie dann die
foreach
Schleife, um die Werte der einzelnen Objekte abzurufen:Im Wesentlichen schreibe ich das Array neu, um den Schlüssel meiner benutzerdefinierten Bestellung zu verwenden. In diesem Fall benötigte ich jedoch den Slug, den Namen und die ID des Begriffs, sodass ich ihn als Objekt und nicht wie oben beschrieben speicherte.
Mein Endziel war es, ein erweitertes benutzerdefiniertes Feld einzurichten, damit beim Erstellen eines Taxonomiebegriffs vom Benutzer eine numerische Reihenfolge angegeben und die Begriffe dann anhand der gewünschten Reihenfolge durchlaufen werden konnten.
Hoffe das hilft jemandem!
quelle
order
Feld haben, gegenseitig und nur das letzte wird angezeigt.Danke Vancoder für deine Hilfe !!! Ich habe mir den ganzen Tag die Haare herausgerissen, um es herauszufinden. Komischerweise war Ihre Lösung eine von einem halben Dutzend, die ich auf mein Whiteboard geschrieben habe, ABER ich hatte keine Ahnung, wie ich tatsächlich ein Array mit diesem als Schlüssel erstellen sollte. Ich bin so ein Noob. Unten ist der Code, den ich letztendlich mit einigen Kommentaren für alle anderen verwendet habe, die dies versuchen!
Wenn jemand bessere Kommentare zu diesem Code hat, lass es mich wissen oder bessere Möglichkeiten, mit irgendetwas umzugehen. Aber ich denke, das ist eine ziemlich großartige Lösung.
quelle
Danke Phil Hoyt, genau das habe ich gesucht. Aber leider konnte ich es nicht mit meinem Setup zum Laufen bringen. Was funktioniert, ist Folgendes:
Prost
quelle
Sortieren Sie Begriffe nach dem Array-Wert 'order' anstelle des Array-Schlüssels. Wenn Sie 2 Elemente mit demselben Schlüssel haben, überschreibt das letzte das erste. Dies verhindert dies und macht sie alle sichtbar:
quelle