La Diferencia Entre Taxonomías Jerárquicas y No Jerárquicas

22 ago 2010, 09:37:56
Vistas: 31.9K
Votos: 37

La pregunta es "¿Cuál es la Diferencia Entre Taxonomías Jerárquicas y No Jerárquicas?" Esta pregunta me desconcertó al principio, así que pensé que sería una buena idea mostrar la diferencia a otros usuarios del sitio que buscan entender esta distinción.

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

'hierarchical' => false

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

¿Y esto?

'hierarchical' => true

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

Ten en cuenta que voy a responder mi propia pregunta, pero no la marcaré como la mejor a menos que nadie más proponga una respuesta realmente buena también. Además, mi intuición me dice que podría no haber captado todas las distinciones entre las dos dicotomías, así que si me faltó algo, por favor hágannoslo saber.

1
Comentarios

¿Puedes explicar también qué es jerárquico respecto a qué? ¿Es el grupo de taxonomía jerárquico respecto al tipo de publicación? ¿O es la taxonomía individual jerárquica respecto al grupo de taxonomía? Me desconcierta un poco la palabra jerárquico, supongo. Gracias.

Dave Dave
24 ene 2012 22:28:37
Todas las respuestas a la pregunta 1
2
47

La respuesta simple es que los términos en taxonomías jerárquicas pueden tener términos hijos. ¿Pero qué más?

'hierarchical'=>false

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

Metabox de Términos de Taxonomía en la Pantalla de Edición de Entrada cuando $hierarchical==false

'hierarchical'=>true

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

Metabox de Términos de Taxonomía en la Pantalla de Edición de Entrada cuando $hierarchical==true

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

Sobre el Registro de Taxonomías Personalizadas, o "¿Por qué no se guarda?"

Aunque no está directamente relacionado con la pregunta, si eres un principiante probando taxonomías personalizadas (o un desarrollador experimentado que no está prestando atención, como me pasó a mí cuando escribí esto!), es probable que intentes agregar register_taxonomy() directamente en el archivo functions.php de tu tema como se ve en la pregunta. ¡Ups!

Si agregas el código directamente en functions.php, tu metabox se mostrará pero no guardará los términos recién añadidos (y en la forma 'hierarchical'=>true del metabox, tus términos existentes no se cargarán con casillas de verificación). Esto se debe a que necesitas registrar taxonomías personalizadas (y tipos de entrada personalizados) dentro de un hook init, así:

<?php
add_action('init','register_movie_genre_taxonomy');
  function register_movie_genre_taxonomy() {
    register_taxonomy('movie-genre', 'movie', array(
      'hierarchical'    => true,
      'label'           => 'Género de Película',
      'query_var'       => 'movie-genre',
      'rewrite'         => array('slug' => 'generos' ),
    ));
}

¡Espero que esto ayude!

22 ago 2010 09:42:03
Comentarios

¿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 Daniel
3 jun 2014 18:11:40

@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ías integrado es solo una de las muchas taxonomías jerárquicas posibles. De manera similar, las Etiquetas (de publicación) 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 cómo una etiqueta es solo un atributo de una taxonomía o el color es un atributo de un automóvil. Eso podría haber sido lo que querías decir, pero quería aclararlo por si acaso.

MikeSchinkel MikeSchinkel
7 jun 2014 06:17:38