WordPress-Taxonomien: Begriffe, Eltern, Kinder
Das programmgesteuerte Erstellen von Taxonomien scheint ein Punkt zu sein, der hin und wieder für diejenigen auftaucht, die Lösungen für andere auf WordPress erstellen.
Taxonomien selbst können sogar etwas verwirrend sein; Ich habe jedoch festgestellt, dass Folgendes normalerweise hilft, das Konzept ein wenig zu festigen:
Hierarchische Taxonomien sind analog zu Kategorien; Nicht-hierarchische Taxonomien sind analog zu Tags.
Angenommen, Sie erstellen eine Lösung für jemanden, bei dem Sie Informationen als Post importieren und eine Taxonomie darauf anwenden müssen. Außerdem möchten Sie vielleicht auch eine übergeordnete Taxonomie auf den Beitrag anwenden.
Wie können wir das machen?
WordPress-Taxonomien: Registrierung, Eltern, Kinder und mehr
Die Situation ist ungefähr so:
Sie haben eine Stelle, auf die eine Taxonomie angewendet wird. Wenn die Taxonomie ein übergeordnetes Element hat, möchten wir es auch auf den Beitrag anwenden.
Dazu benötigen wir vier (vielleicht fünf) Funktionen:
Ich füge auch hinzu, dass ich denke, dass es eine gute Idee ist, sanitize_title_with_dashes zu verwenden , wenn Sie irgendeine Art von nicht bereinigter, eingehender Zeichenfolge für den Slug des Beitragstyps verwenden (aber es ist natürlich nicht notwendig, wenn Sie dies nicht tun ).
1 Registrieren Sie die Taxonomie
In diesem Beispiel erstellen wir eine Taxonomie für einen benutzerdefinierten Beitragstyp.
Da dies alles sein könnte, woran Sie arbeiten, werde ich eine Variable namens $postType verwenden, um den Punkt zu demonstrieren .
<?php
register_taxonomy(
'acme-category',
$postType,
[
'label' => 'Acme Categories',
'rewrite' => ['slug' => 'acme-category'],
'capabilities' => [
'manage_terms' => 'manage_options',
'edit_terms' => 'manage_options',
'delete_terms' => 'manage_options',
'assign_terms' => 'manage_options',
],
'hierarchical' => true,
]
);
Es ist einfach genug, aber beachten Sie die Codereferenz :
Eine einfache Funktion zum Erstellen oder Ändern eines Taxonomieobjekts basierend auf den angegebenen Parametern. Beachten Sie beim Ändern eines vorhandenen Taxonomieobjekts, dass der
$object_typeWert aus der ursprünglichen Registrierung überschrieben wird.
Im Allgemeinen ist dies kein Problem, aber wenn Sie an einer großen Anwendung oder einer bereits vorhandenen Anwendung arbeiten, sollten Sie dies berücksichtigen.
2 Fügen Sie einen Begriff für die Taxonomie ein
Nehmen Sie als Nächstes an, dass Ihnen ein $customPost zur Verfügung gestellt wird und über eine Funktion zum Abrufen seines Namens, seines Titels oder einer anderen Eigenschaft verfügt, die zur Identifizierung verwendet wird (außer seiner ID).
Dies könnte an eine Funktion übergeben oder durch die Verwendung anderer Funktionen, die WordPress bereitstellt, verfügbar gemacht werden. In diesem Beispiel verwende ich eine getName()- Funktion für das $customPost- Objekt.
<?php
$termInfo = wp_insert_term(
$customPost->getName(),
'acme-category',
['slug' => sanitize_title_with_dashes($customPost->getName())]
);
Beachten Sie, dass ich auch das Ergebnis der Funktion in eine $termInfo- Variable einlese. Wir werden dies im nächsten Schritt verwenden, um das übergeordnete Objekt nachzuschlagen, falls vorhanden, und es auch auf unser benutzerdefiniertes Post-Objekt anwenden.
3 Suchen Sie nach dem übergeordneten Begriff eines Begriffs
Hier verwenden wir den Begriff, den wir gerade erstellt haben, um zu sehen, ob ein Elternteil dafür existiert. Beachten Sie, dass die Taxonomie nicht existiert (oder wenn der Begriff nicht gefunden wird), wenn es false zurückgibt.
Zu diesem Zweck sollten Sie Ihrem Code bei Bedarf eine Bedingung hinzufügen, um ihn zu erstellen. Um den Code kurz zu halten, lasse ich ihn jedoch im folgenden Code weg :
<?php
$parentTermInfo = get_term_by(
'term_taxonomy_id',
$termInfo['term_taxonomy_id'],
'acme-category',
ARRAY_A
);
Beachten Sie, dass ich das Ergebnis des obigen Codes in einer $parentTermInfo- Variablen speichere. Auf diese Weise können wir dies an unsere letzte Funktion übergeben, um die übergeordneten Informationen auf unser Post-Objekt anzuwenden.
4 Wenden Sie den Begriff auf einen Beitrag an
Schließlich wenden wir den Begriff (oder die Begriffe) an, wenn es ein übergeordnetes Objekt gibt. Denken Sie daran, dass hier die Bedingung benötigt wird. Einfach ausgedrückt, wenn es kein übergeordnetes Element gibt, wird der Wert $parentTermInfo[‚parent‘] nicht benötigt.
Aber für den Code unten gehen wir davon aus, dass wir ihn haben.
<?php
wp_set_object_terms(
$customPost->getId(),
[
$parentTermInfo['parent'],
$termInfo['term_id'],
],
'acme-category',
true
);
Beachten Sie in der Codereferenz, dass dadurch der Begriff erstellt wird, falls er noch nicht vorhanden ist. Andernfalls wird das bereits Definierte verwendet und auf den Beitrag angewendet.
Und fertig
Im Allgemeinen ist es nicht so viel Arbeit. Es hilft sicherzustellen, dass Sie ein klares Verständnis dafür haben, wie Taxonomien und ihre Begriffe funktionieren. Außerdem ist es hilfreich zu wissen, wie man den übergeordneten Begriff eines bestimmten Begriffs abruft, wenn man das möchte (ansonsten ist der dritte Schritt nicht erforderlich).
Aber hoffentlich bieten Ihnen die Links und der obige Code alles, was Sie brauchen, um eine Taxonomie zu erstellen und sie auf einen Beitrag anzuwenden (sowie einen übergeordneten Begriff, falls erforderlich).

