Ich erstelle ein Altersauswahlmenü im Administrator, das aus einer Taxonomie von ausgefüllt ist age
. Die Taxonomie ist wie folgt hierarchisch:
- 18-25 (Elternteil, ID 183)
- 18 (Kind)
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26-30 (Elternteil, ID 184)
- 26
- 27
- 28
- 29
- 30
Ich möchte nur die Kinder (18, 19 usw.) und nicht die Eltern (18-25, 26-30) usw. auflisten. Derzeit verwende ich get_terms
das parent
Argument, aber es akzeptiert nicht mehr als 1 Eltern-ID. Folgendes habe ich bisher, das die Kinder von 18 bis 25 Jahren zeigt.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183',
));
Hier ist, was ich möchte, aber nicht unterstützt wird. Ich habe es auch mit einem Array versucht, aber es funktioniert auch nicht.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183,184',
));
Ich sehe, dass es eine Funktion get_term_children gibt , aber ich bin mir nicht sicher, wie ich diese verwenden soll, da sie anscheinend auch nur einen Wert akzeptiert. Beispiel: In diesem Beispiel würde eine ungeordnete Liste erstellt, aber ich könnte sie für das Auswahlmenü ändern.
<?php
$termID = 183;
$taxonomyName = "age";
$termchildren = get_term_children( $termID, $taxonomyName );
echo '<ul>';
foreach ($termchildren as $child) {
$term = get_term_by( 'id', $child, $taxonomyName );
echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
?>
quelle
get_terms
Zweimal anrufen und die beiden Ergebnisfelder zusammenführen?get_terms
Anruf tun können ). Ihre Frage lautete, als wollten Sie alle Kinder mit zwei bestimmten Elternbegriffen.Antworten:
Dies sollte für Sie funktionieren:
quelle
$term->name
ist ungültig inget_term_link()
, es akzeptiert nur den Begriff ID, Schnecke oder ObjektSie könnten auch tun:
Ich habe festgestellt, dass Eltern ein "Eltern" -Feld gleich 0 haben und ein Kind seine Eltern-ID darin hat.
quelle
wpse_exclude_top
Parameter entfernen , der den Abfrageargumenten hinzugefügt wurde ;-). Ich stimme jedoch zu, dies ist schneller als die akzeptierte Antwortwpse_exclude_top
undexclude_top
sie nicht gefunden. Google weiß auch nichts davon. Wo ist es dokumentiert?Wir können die Eltern der obersten Ebene ausschließen, indem wir sie herausfiltern, indem wir den
terms_clauses
Filter verwenden, um die SQL-Abfrage zu ändern, bevor sie ausgeführt wird. Auf diese Weise müssen wir Eltern nicht in der letztenforeach
Schleife überspringen, da sie nicht in der zurückgegebenen Reihe von Begriffen enthalten sind. Dies erspart uns unnötige Arbeit und CodierungSie können Folgendes versuchen:
Um Eltern der obersten Ebene auszuschließen, können wir jetzt
'wpse_exclude_top' => 1
mit unseren Argumenten übergeben. Der neuewpse_exclude_top
Parameter wird vom obigen Filter unterstütztNur eine Anmerkung,
get_term_link()
akzeptieren Sie nicht den Begriff Namen, nur Slug, ID oder das vollständige Begriff Objekt. Übergeben Sie für die Leistung immer den Begriff Objekt an,get_term_link()
wenn der Begriff Objekt verfügbar ist ( wie in diesem Fall ).quelle
Warum können Sie das
childless
Argument nicht einfach auf true setzen?quelle
childless
Argument auf true setzen, können Sie nur eine Ebene tief gehen. Dies funktioniert also nicht für Taxonomien mit drei oder mehr Ebenen.Wenn Sie das Kind mehrerer Eltern anzeigen, können Sie dies versuchen. Erwähnung des Begriffs des untergeordneten Begriffs.
quelle