Różnica między taksonomiami hierarchicznymi i niehierarchicznymi?

34

Pytanie brzmi: „Jaka jest różnica między taksonomiami hierarchicznymi a niehierarchicznymi?” To pytanie naprawdę mnie zaskoczyło, więc pomyślałem, że dobrym pomysłem byłoby pokazanie różnicy innym użytkownikom surfującym po stronie, którzy szukają wyróżnienia.

W szczególności pytanie dotyczy hierarchicalargumentu przekazanego do register_taxonomy()funkcji. Mówiąc dokładniej, jaka jest różnica między tym:

„hierarchical” => false

register_taxonomy('movie-genre', 'movie', array(
  'hierarchical'    => false,
  'label'           => 'Genre',
  'query_var'       => 'movie-genre',
  'rewrite'         => array('slug' => 'genres' ),
));

I to?

„hierarchical” => true

register_taxonomy('movie-genre', 'movie', array(
  'hierarchical'    => true,
  'label'           => 'Genre',
  'query_var'       => 'movie-genre',
  'rewrite'         => array('slug' => 'genres' ),
));

Uwaga: zamierzam odpowiedzieć na własne pytanie, ale nie oznaczę tego jako najlepszego, chyba że nikt inny nie podejmie również naprawdę dobrej odpowiedzi. Również moje przeczucie mówi mi, że nie mogłem uchwycić każdej różnicy między dwoma dychotomiami, więc jeśli nie, daj nam znać, co przegapiłem.

MikeSchinkel
źródło
Czy potrafisz także wyjaśnić, co jest hierarchiczne? Czy grupa taksonomiczna jest hierarchiczna względem typu postu? Czy indywidualna taksonomia jest hierarchiczna względem grupy taksonomii? Jestem po prostu zaskoczony słowem hierarchicznym. Dzięki.
Dave

Odpowiedzi:

42

Prosta odpowiedź jest taka, że warunki w hierarchicznej taksonomii może mieć warunki potomnych . Ale co jeszcze?

„hierarchical” => false

Kiedy określisz a 'hierarchical'=>false, otrzymasz następujący typ metaboksu, który jest formatem metaboksu, który WordPress używa również do tagów postów :

Taksonomia Termin Metabox na ekranie edycji postu, gdy $ hierarchical == false

„hierarchical” => true

Jednak po określeniu 'hierarchical'=>trueotrzymujesz następujący typ metaboksu, który jest formatem metaboksu, którego WordPress używa także dla kategorii :

Taksonomia Termin Metabox na ekranie edycji postu, gdy $ hierarchical == true

Oczywiście powyższy przykład wskazuje również, gdzie hierarchiczna kategoryzacja może być trochę mieszana, ponieważ w rzeczywistości podkategorie często dotyczą wielu kategorii nadrzędnych. Mimo to umożliwienie „wielu rodzicom” nie polega na tym, jak taksonomie hierarchiczne działają w WordPressie, ale IMO idealnie kategoryzujące wszystko jest prawie niemożliwe bez względu na to, jak działa WordPress. Więc Caveat Emptor!

W sprawie niestandardowej rejestracji taksonomii lub „Dlaczego to nie oszczędza?”

Chociaż nie jest to bezpośrednio związane z pytaniem, czy jesteś początkującym testującym niestandardowe taksonomie ( lub doświadczonym twórcą, który nie zwraca uwagi, jak mi się przydarzyło, kiedy to napisałem! ), Prawdopodobnie spróbujesz dodać register_taxonomy()kod widzisz w pytaniu bezpośrednio w functions.phppliku motywu . Ups!

Jeśli dodasz kod bezpośrednio do functions.phpmetaboksu, wyświetli się, ale nie zapisze nowo dodanych terminów (a w 'heirarchical'=>truepostaci metaboksu twoje istniejące terminy nie zostaną załadowane z polami wyboru.) To dlatego, że musisz zarejestrować niestandardowe taksonomie ( i niestandardowe typy postów) wewnątrz inithaka, takie jak:

<?php
add_action('init','register_movie_genre_taxonomy');
  function register_movie_genre_taxonomy() {
    register_taxonomy('movie-genre', 'movie', array(
      'hierarchical'    => true,
      'label'           => 'Movie Genre',
      'query_var'       => 'movie-genre',
      'rewrite'         => array('slug' => 'genres' ),
    ));
}

Mam nadzieję że to pomoże!

MikeSchinkel
źródło
Czy taksonomia hierarchiczna to to samo, co kategoria niestandardowa? Czy taksonomia niehierarchiczna jest tym samym, co tag niestandardowy?
Daniel
1
@ ravensfan55222 - Nie do końca, ale prawie. Zamiast „hierarchicznej taksonomii” będącej tym samym co kategoria niestandardowa, wbudowany system klasyfikacji kategorii jest tylko jedną z wielu potencjalnych taksonomii hierarchicznych. Podobnie (Post) Tagi to tylko jeden przykład niehierarchicznej taksonomii. Mówiąc dokładniej, „hierarchiczny” jest tylko atrybutem taksonomii, tak jak etykieta jest sprawiedliwym atrybutem taksonomii, a kolor jest atrybutem samochodu. Być może o to ci chodziło, ale chciałem wyjaśnić, jeśli nie.
MikeSchinkel,