Taksonomie WordPress: warunki, rodzice, dzieci
Programowe tworzenie taksonomii wydaje się być kwestią, która pojawia się od czasu do czasu dla tych, którzy budują rozwiązania dla innych na WordPress.
Same taksonomie mogą być nawet nieco mylące; jednak odkryłem, że następujące elementy zwykle pomagają nieco utrwalić tę koncepcję:
Taksonomie hierarchiczne są analogiczne do kategorii; taksonomie niehierarchiczne są analogiczne do tagów.
Załóżmy jednak, że tworzysz rozwiązanie dla kogoś, w którym musisz zaimportować informacje jako post i zastosować do nich taksonomię. Co więcej, być może chcesz również zastosować do postu taksonomię nadrzędną.
Jak możemy to zrobić?
Taksonomie WordPress: rejestracja, rodzice, dzieci i inne
Sytuacja wygląda mniej więcej tak:
Masz stanowisko, do którego zostanie zastosowana taksonomia. Jeśli taksonomia ma rodzica, chcemy ją również zastosować do stanowiska.
Aby to zrobić, potrzebujemy czterech (może pięciu) funkcji:
Dodam również, że myślę, że dobrym pomysłem jest użycie sanitize_title_with_dashs, jeśli zamierzasz używać jakiegoś rodzaju nieoczyszczonego, przychodzącego ciągu dla ślimaka typu post (ale nie jest to konieczne, jeśli nie jesteś, oczywiście ).
1 Zarejestruj taksonomię
W tym przykładzie utworzymy taksonomię dla niestandardowego typu postu.
Ponieważ może to być wszystko, nad czym pracujesz, użyję zmiennej o nazwie $postType, aby zademonstrować punkt.
<?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,
]
);
To dość proste, ale weź notatkę z odniesienia do kodu :
Prosta funkcja do tworzenia lub modyfikowania obiektu taksonomii na podstawie podanych parametrów. Jeśli modyfikujesz istniejący obiekt taksonomii, zauważ, że
$object_typewartość z oryginalnej rejestracji zostanie nadpisana.
Ogólnie rzecz biorąc, nie stanowi to problemu, ale jeśli pracujesz nad dużą aplikacją lub już istniejącą aplikacją, należy o tym pamiętać.
2 Wstaw termin do taksonomii
Następnie załóżmy, że $customPost jest dostępny dla Ciebie i ma funkcję do pobierania jego nazwy, tytułu lub innej właściwości używanej do jego identyfikacji (innej niż jego identyfikator).
Może to zostać przekazane do funkcji lub może zostać udostępnione poprzez dowolne użycie innych funkcji zapewnianych przez WordPress. W tym przykładzie użyję funkcji getName() na obiekcie $ customPost .
<?php
$termInfo = wp_insert_term(
$customPost->getName(),
'acme-category',
['slug' => sanitize_title_with_dashes($customPost->getName())]
);
Zauważ, że odczytuję również wynik funkcji do zmiennej $termInfo. Użyjemy tego w następnym kroku, aby wyszukać rodzica, jeśli istnieje, a także zastosować go do naszego niestandardowego obiektu post.
3 Wyszukaj rodzica semestru
Tutaj użyjemy terminu, który właśnie stworzyliśmy, aby sprawdzić, czy istnieje dla niego rodzic. Zauważ, że jeśli zwróci false, to taksonomia nie istnieje (lub jeśli termin nie został znaleziony).
W tym celu będziesz chciał dodać warunek do swojego kodu, aby go utworzyć, jeśli to konieczne. Aby jednak kod był zwięzły, pomijam go w następującym kodzie :
<?php
$parentTermInfo = get_term_by(
'term_taxonomy_id',
$termInfo['term_taxonomy_id'],
'acme-category',
ARRAY_A
);
Zauważ, że przechowuję wynik powyższego kodu w zmiennej $parentTermInfo. To jest po to, abyśmy mogli przekazać to do naszej ostatniej funkcji do zastosowania informacji nadrzędnej do naszego obiektu post.
4 Zastosuj termin do postu
Na koniec zastosujemy termin (lub terminy), jeśli istnieje obiekt nadrzędny. Przypomnijmy, że w tym miejscu będzie potrzebny warunek. Mówiąc najprościej, jeśli nie ma rodzica, wartość $parentTermInfo[’parent’] nie będzie potrzebna.
Ale w przypadku poniższego kodu zakładamy, że go mamy.
<?php
wp_set_object_terms(
$customPost->getId(),
[
$parentTermInfo['parent'],
$termInfo['term_id'],
],
'acme-category',
true
);
Na podstawie odwołania do kodu zauważ, że spowoduje to utworzenie terminu, jeśli jeszcze nie istnieje; w przeciwnym razie użyje tego, co już zostało zdefiniowane i zastosuje to do posta.
I zrobione
Ogólnie rzecz biorąc, to nie jest aż tak dużo pracy. Pomaga to upewnić się, że dobrze rozumiesz, jak działają taksonomie i ich terminy. Co więcej, pomaga również wiedzieć, jak pobrać rodzica danego terminu, jeśli chcesz to zrobić (w przeciwnym razie trzeci krok nie jest konieczny).
Ale miejmy nadzieję, że powyższe linki i powyższy kod zapewnią wszystko, czego potrzebujesz, aby utworzyć taksonomię i zastosować ją do posta (a także w razie potrzeby nadrzędnego terminu).

