¿La diferencia entre taxonomías jerárquicas y no jerárquicas?

34

La pregunta es "¿Cuál es la diferencia entre taxonomías jerárquicas y no jerárquicas?" Esta pregunta realmente me dejó perplejo al principio, así que pensé que sería una buena idea mostrar la diferencia a otros que navegan por el sitio buscando la distinción.

Específicamente, la pregunta se refiere al hierarchicalargumento pasado a la register_taxonomy()función. Más específicamente, ¿cuál es la diferencia entre esto:

'jerárquico' => falso

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

¿Y esto?

'jerárquico' => verdadero

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

Tenga en cuenta que voy a seguir adelante y responder mi propia pregunta, pero no la marcaré como la mejor a menos que nadie más dé una respuesta realmente buena también. Además, mi instinto me dice que es posible que no haya captado todas las distinciones entre las dos dicotomías, de modo que, si no, háganos saber lo que me perdí.

MikeSchinkel
fuente
¿Puedes explicar también qué es jerárquico a qué? ¿El grupo de taxonomía es jerárquico para el tipo de publicación? ¿O es la taxonomía individual jerárquica al grupo de taxonomía? Me sorprende la palabra jerárquica, supongo. Gracias.
Dave

Respuestas:

42

La respuesta simple es que los términos en taxonomías jerárquicas pueden tener términos secundarios . Pero que mas?

'jerárquico' => falso

Cuando especificas 'hierarchical'=>false, obtienes el siguiente tipo de metabox, que es el formato de metabox que WordPress también usa para las etiquetas de publicación :

Término de taxonomía Metabox en la pantalla de edición de publicaciones cuando $ jerarquía == falso

'jerárquico' => verdadero

Sin embargo, cuando especificas 'hierarchical'=>true, obtienes el siguiente tipo de metabox, que es el formato de metabox que WordPress también usa para las Categorías :

Término de taxonomía Metabox en la pantalla de edición de publicaciones cuando $ jerarquía == verdadero

Por supuesto, el ejemplo anterior también señala que la categorización jerárquica puede ser un poco confusa porque en la vida real las subcategorías a menudo se aplican a muchas categorías principales. Aun así, permitir a "muchos padres" no es cómo funcionan las taxonomías jerárquicas en WordPress, pero categorizar IMO perfectamente es casi imposible, independientemente de cómo funcione WordPress. ¡Así que Caveat Emptor!

En el Registro de taxonomía personalizada, o "¿Por qué no se guardará?"

Si bien no está directamente relacionado con la pregunta si eres un novato que prueba taxonomías personalizadas ( o un desarrollador experimentado que no está prestando atención como me sucedió cuando escribí esto ), es probable que intentes agregar register_taxonomy()como el código ves en la pregunta directamente en el functions.phparchivo de tu tema . ¡Uy!

Si agrega el código directamente en functions.phpsu metabox, se mostrará pero no guardará sus términos recién agregados (y en la 'heirarchical'=>trueforma de metabox, sus términos existentes no se cargarán con casillas de verificación). Esto se debe a que necesita registrar taxonomías personalizadas ( y tipos de publicaciones personalizadas) dentro de un initgancho, así:

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

¡Espero que esto ayude!

MikeSchinkel
fuente
¿Es una taxonomía jerárquica lo mismo que una categoría personalizada? ¿Y es una taxonomía no jerárquica lo mismo que una etiqueta personalizada?
Daniel
1
@ ravensfan55222 - No exactamente, pero casi. En lugar de que una 'taxonomía jerárquica' sea lo mismo que una categoría personalizada, el sistema de clasificación de categoría incorporado es solo una de las muchas posibles taxonomías jerárquicas. Del mismo modo, las etiquetas (Post) son solo un ejemplo de una taxonomía no jerárquica. Más correctamente, "jerárquico" es solo un atributo de una taxonomía, como la forma en que una etiqueta es un atributo justo de una taxonomía o el color es un atributo de un automóvil. Eso podría haber sido lo que quisiste decir, pero quería aclarar si no.
MikeSchinkel