Kiedy tworzymy wpisy lub własne typy postów, czasem pojawia się potrzeba posegregowania tych postów. Oczywiście, WordPress dostarcza nam gotowego mechanizmu w postaci Kategorii i Tagów. Możliwość tworzenia kategorii tematycznych i tagów – czyli swego rodzaju etykietek, którymi możemy oznaczać wpisy – zazwyczaj w pełni wystarcza na blogu lub w nieskomplikowanym katalogu produktów.

W przypadku bardziej złożonych portali lub w obszerniejszych katalogach produktów może pojawić się potrzeba stworzenia dodatkowego sposobu podzielenia wpisów – ten problem można właśnie rozwiązać za pomocą własnej taksonomii WordPress.

Co to jest taksonomia?

Taksonomia to zarówno teoretyczny jak i praktyczny aspekt klasyfikowania obiektów i koncepcji, który zawiera ścisłe i logiczne reguły.

W Informatyce częściej mówimy o klasyfikacji lub klasteryzacji. Poza WordPressem, pojęcia taksonomii używamy w przypadku wyszukiwarek internetowych. Samo słowo „taksonomia” można częściej spotkać w naukach biologicznych gdzie odnosi się głównie do klasyfikacji organizmów żywych.

Co to jest term?

Term – w nomenklaturze WordPressa oznacza pojedynczy wpis w konkretnej taksonomii. Np. „Programowanie” to term taksonomii Kategorie na moim blogu a WordPress to term taksonomii o nazwie Tagi.

Czym się różnią kategorie od tagów?

Aby poczuć ideę jaka kryje się za mechanizmami taksonomii w WordPressie należy zrozumieć kluczową różnicę pomiędzy dwoma sposobami klasyfikowania postów w WordPressie.

Kategorie to taksonomia z hierarchią. Kategoria może zawierać obiekty ale mogą też odwoływać się do niej inne kategorie. Kategoria nadrzędna to rodzić (ang. parent) natomiast kategoria podrzędna to dziecko (ang. child). W WordPressie dany wpis może należeć tylko do podkategorii lub zarówno do podkategorii oraz kategorii. Nic nie stoi na przeszkodzie aby dany obiekt należał do jednej lub kilku kategorii. Wszystkie warianty pokazane poniżej są poprawne z technicznego punktu widzenia:

Przykłady przypisania kategorii do wpisu

Tag to także taksonomia, różnica pomiędzy kategorią a tagiem polega na tym, że tagi nie posiadają hierarchii i dany tag nie może odwoływać się do innego tagu.

Przykład tagowania wpisu

Własna taksonomia w WordPressie

Może się zdarzyć, że kategorie i tagi nie są wystarczające aby skutecznie sklasyfikować wpisy lub inne typy postów. Przykładem mogą być:

  • „producent” w katalogu produktów,
  • „poziom trudności” lekcji w serwisie z kursami online,
  • „lokalizacja” lub „obsługiwane obszary” w katalogu firm,

czy jakikolwiek inny sposób podziału wpisów, który byłby w danym przypadku potrzebny.

Część użytkowników w takich sytuacjach wykorzystuje do tego standardowe kategorie lub filtry jednak takie podejście może spowodować problemy zarówno przy publikacji jak i korzystaniu z serwisu. Może się zdarzyć, że tagów i kategorii będzie dużo, będą nieuporządkowane i takie rozwiązanie może nie być skalowalne.

Rozwiązaniem na te problemy są własne taksonomie WordPress. Tworzenie własnej taksonomii to wbudowana w WordPressa możliwość, która daje nieograniczone możliwości pod względem klasyfikowania czyli uporządkowywania obszernego zbioru wpisów i danych.

Rejestracja taksonomii

Do wykonania własnej taksonomii w WordPressie służy funkcja register_taxonomy();

Pierwszy argument nadaje nazwę rejestrowanej taksonomii, drugi odpowiada za typ postu, który taksonomia ma obejmować. Następnie trzeba zamieścić tablicę z dodatkowymi parametrami.

Najlepiej wszystko pokazać na przykładzie:

register_taxonomy('producent','post',array(
   'hierarchical' => false,
   'labels' => $labels,
   'show_ui' => true,
   'show_admin_column' => true,
   'show_in_rest' => true,
   'update_count_callback' => '_update_post_term_count',
   'query_var' => true,
   'rewrite' => array('slug' => 'producent'),
));

W zmiennej $labels przechowujemy napisy widoczne w interfejsie:

$labels = array(
   'name' => _x('Producent', 'taxonomy general name'),
   'singular_name' => _x('Producent', 'taxonomy singular name'),
   'search_items' => ('Szukaj producentów'),
   'popular_items' => ('Popularni producenci'),
   'all_items' => ('Wszyscy producenci'),
   'parent_item' => null, 
   'parent_item_colon' => null, 
   'edit_item' => ('Edytuj producenta'),
   'update_item' => ('Aktualizuj producenta'),
   'add_new_item' => ('Dodaj nowego producenta' ),
   'new_item_name' => ('Nazwa nowego producenta' ),
   'separate_items_with_commas' => ('Oddziel producentów przecinkami'),
   'add_or_remove_items' => ('Dodaj lub usuń producentów'),
   'choose_from_most_used' => ('Wybierz z pośród najczęściej używanych producentów'),
   'menu_name' => _('Producenci'),
);

Korzystanie z taksonomii

Przykład taksonomii producenci

Dzięki tej funkcji (którą umieszczamy we własnej wtyczce lub pliku functions.php) w naszym blogu lub katalogu możemy przypisywać producentów.

Jeżeli chcemy użyć hierarchicznej taksonomii wystarczy zmienić linijkę z  hierarchical na true:

'hierarchical' => true,

Przywołany przykład z lokalizacją w katalogu firm wyglądał by w praktyce następująco:

Lokalizacje jako osobna taksonomia

Rejestracja taksonomii spowoduje pojawienie się w kokpicie nowej podstrony gdzie możemy organizować taksonomie, oraz edytować poszczególne wartości.

Edycja pojedynczego elementu umożliwia zmienić slug, opis, nazwę i ewentualnie przypisać rodzica:

Edycja wartości w taksonomii przykładowej taksonomii z lokalizacjami.

Wtyczka do tworzenia taksonomii

Własne taksonomie można tworzyć też za pomocą wtyczki. Może służyć do tego wtyczka Simple Taxonomy, którą napisał Amaury Balmer. Mimo, że nie była przez długi czas aktualizowana pracuje z najnowszymi wersjami WordPress.

Do ustawień dochodzi nam kolejna podstrona z ustawieniami o nazwie Custom Taxonomies czyli Własne taksonomie. Na specjalnej stronie możemy skonfigurować wszelkie szczegóły:

Tworzenie taksonomii we wtyczce Simple Taxonomy

Choć niektórym może się to wydawać wygodne, ja pozostanę przy tworzeniu taksonomii za pomocą kodu. Osobiście uważam że tak jest szybciej a w przypadku aktualizacji będę mógł łatwo dostosować kod do nowych standardów lub wykonać niestandardowe modyfikacje. Omijam też w ten sposób wszelkie potencjalne problemy jakie mogą mieć związek z aktualizacjami, błędami lub nowymi wersjami technologii zależnych.

Wyświetlanie taksonomii

Taksonomie, którymi posługujemy się na naszej stronie WordPress można wygodnie wyświetlać w szablonach. Aby otrzymać listę wszystkich termów z danej taksonomii możemy użyć instrukcji:

<?php echo get_the_term_list( $post->ID, 'producent', '<li">', ', ', '</li>' ); ?>

Kiedy chcemy zaś w dowolnym miejscu (na stronie głównej lub w postaci widgetu) stworzyć listę postów, którym przypisano konkretną taksonomię można użyć argumentu tax_query. Przykładowo:

$args = array( 
     'post_type' => 'product',
     'tax_query' => array(
         array(
             'taxonomy' => 'producent',
             'field'    => 'slug',
             'terms'    => array( 'firma-abc' )
         )
     )
 ); 

W polu field możemy posłużyć się wartościami term_id, name albo slug. W polu terms podajemy wtedy wartości zgodnie z ustaloną konwencją.

Dedykowany szablon dla taksonomii

W przewodniku o tworzeniu własnych szablonów i motywów WordPress, napisałem między innymi, że można tworzyć osobne szablony dla podstron taksonomii wykorzystując specjalną konwencję nazewnictwa plików. W praktyce wygląda to tak, że wystarczy stworzyć stronę podobną do archiwum i nadać jej nazwę: taxonomy-nazwa.php.

Dla naszego przykładu z producentami będzie to: taxonomy-producent.php

Na tej stronie wystarczy nam taki kod aby wyświetlić wszystkie obiekty, którym przypisano konkretny term:

<?php
$thistag_id = get_queried_object()->term_id;
global $post;
$args = array('tag_id'=> $thistag_id, 'posts_per_page'=>32);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
   <a href="<?php the_permalink(); ?>">
      <?php the_title(); ?>
   </a>
<?php endforeach;
wp_reset_postdata();?>

Kwestie SEO

Należy pamiętać, że strony z taksonomiami to kolejne podstrony, których treść jest generowana automatycznie. Jeżeli przeglądanie konkretnych taksonomii i termów nie będzie przydatne dla użytkownika należy rozważyć wykluczenie ich z wyników wyszukiwania za pomocą dyrektyw nofollow i noindex.

Dodatek 1: Dodawanie istniejących taksonomii do istniejących typów postów

W kwestii taksonomii warto jeszcze wspomnieć o funkcji register_taxonomy_for_object_type(). Pozwala ona przypisać istniejącą taksonomię do istniejącego typu postu. Poniżej często spotykany przykład, który dodaje standardowe Kategorie do standardowych Stron czyli taksonomię Category przypisujemy typowi Pages:

function add_taxonomies_to_pages() {
   register_taxonomy_for_object_type( 'category', 'page' );
}
add_action( 'init', 'add_taxonomies_to_pages' );

Jeżeli chcielibyśmy wprowadzić obsługę tagów na stronach, wówczas użylibyśmy takich parametrów:

register_taxonomy_for_object_type( 'post_tag', 'page' );

Podsumowanie

Taksonomie to bardzo przydatny mechanizm, który znajdzie zastosowanie w obszernych portalach, blogach czy stroną z katalogiem produktów. Możliwość dostosowania ich do własnych potrzeb oraz skalowalność tego rozwiązania powinna w pełni wystarczać w różnych sytuacjach.

Źródła

Oceń artykuł na temat: Tworzenie taksonomii WordPress
Średnia : 4.8 , Maksymalnie : 5 , Głosów : 27