Der Unterschied zwischen hierarchischen und nicht hierarchischen Taxonomien?

34

Die Frage lautet: "Was ist der Unterschied zwischen hierarchischen und nicht-hierarchischen Taxonomien?" Diese Frage hat mich anfangs wirklich verblüfft und ich dachte, es wäre eine gute Idee, den Unterschied anderen zu zeigen, die auf der Website nach dem Unterschied suchen.

Insbesondere bezieht sich die Frage auf hierarchicaldas an die register_taxonomy()Funktion übergebene Argument . Was ist der Unterschied zwischen diesen:

'hierarchisch' => falsch

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

Und das?

'hierarchisch' => wahr

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

Beachten Sie, dass ich meine eigene Frage beantworten werde, sie aber nicht als die beste bezeichnen werde, es sei denn, niemand anderes gibt eine wirklich gute Antwort. Mein Bauchgefühl sagt mir auch, dass ich möglicherweise nicht jede Unterscheidung zwischen den beiden Dichotomien getroffen habe. Wenn nicht, lassen Sie uns bitte wissen, was ich verpasst habe.

MikeSchinkel
quelle
Können Sie auch erklären, was für was hierarchisch ist? Ist die Taxonomiegruppe hierarchisch zum Beitragstyp? Oder ist die individuelle Taxonomie hierarchisch zur Taxonomiegruppe? Ich bin nur durch das Wort hierarchisch, denke ich, verblüfft. Vielen Dank.
Dave

Antworten:

42

Die einfache Antwort lautet, dass Terme in hierarchischen Taxonomien untergeordnete Terme haben können . Aber was noch?

'hierarchisch' => falsch

Wenn Sie eine angeben, erhalten 'hierarchical'=>falseSie den folgenden Metabox-Typ, der das Metabox-Format ist, das WordPress auch für Post-Tags verwendet :

Taxonomiebegriff-Metabox im Post-Edit-Bildschirm, wenn $ hierarchical == false ist

'hierarchisch' => wahr

Wenn Sie jedoch angeben, erhalten 'hierarchical'=>trueSie den folgenden Metabox-Typ, der das Metabox-Format ist, das WordPress auch für Kategorien verwendet :

Taxonomiebegriff-Metabox im Post-Edit-Bildschirm, wenn $ hierarchical == true ist

Das obige Beispiel zeigt natürlich auch, wo hierarchische Kategorisierung ein bisschen uneinheitlich sein kann, da in der Realität Unterkategorien oft auf viele übergeordnete Kategorien zutreffen. Trotzdem "viele Eltern" zuzulassen ist nicht die Funktionsweise hierarchischer Taxonomien in WordPress, aber IMO ist es fast unmöglich, alles perfekt zu kategorisieren, unabhängig davon, wie WordPress funktioniert. Also Vorbehalt Emptor!

Bei der benutzerdefinierten Taxonomie-Registrierung oder "Warum wird nicht gespeichert?"

Auch wenn dies nicht direkt mit der Frage zusammenhängt, ob Sie ein Neuling sind, der benutzerdefinierte Taxonomien ausprobiert, oder ein erfahrener Entwickler, der nicht genau darauf achtet, wie es mir bei meinem Verfassen passiert ist, ist es wahrscheinlich, dass Sie versuchen werden, register_taxonomy()den Code hinzuzufügen Sie sehen in der Frage direkt in der functions.phpDatei Ihres Themas . Hoppla!

Wenn Sie den Code direkt in functions.phpIhre Metabox einfügen, wird angezeigt, die neu hinzugefügten 'heirarchical'=>trueBegriffe werden jedoch nicht gespeichert (und in Form der Metabox werden die vorhandenen Begriffe nicht mit Kontrollkästchen geladen.) Dies liegt daran, dass Sie benutzerdefinierte Taxonomien registrieren müssen ( und benutzerdefinierte Post-Typen) in einem initHook wie folgt:

<?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' ),
    ));
}

Hoffe das hilft!

MikeSchinkel
quelle
Ist eine hierarchische Taxonomie dasselbe wie eine benutzerdefinierte Kategorie? Und ist eine nicht hierarchische Taxonomie dasselbe wie ein benutzerdefiniertes Tag?
Daniel
1
@ ravensfan55222 - Nicht genau, aber fast. Anstatt dass eine hierarchische Taxonomie mit einer benutzerdefinierten Kategorie identisch ist, ist das eingebaute Kategoriesystem nur eine von vielen möglichen hierarchischen Taxonomien. In ähnlicher Weise sind (Post-) Tags nur ein Beispiel für eine nicht hierarchische Taxonomie. Genauer gesagt ist "hierarchisch" nur ein Attribut einer Taxonomie, wie ein Etikett nur ein Attribut einer Taxonomie ist oder Farbe ein Attribut eines Autos ist. Das haben Sie vielleicht gemeint, aber ich wollte es klären, wenn nicht.
MikeSchinkel