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

33

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

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

'hierarchical' = > falso

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

¿Y esto?

'hierarchical' = > verdadero

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

Nota: Voy a seguir adelante y responderé mi propia pregunta, pero no la marcaré como la mejor, a menos que nadie más responda con una buena respuesta también. Además, mi intuición me dice que podría no haber capturado todas las distinciones entre las dos dicotomías, por lo que, de no ser así, háganos saber lo que me perdí.

    
pregunta MikeSchinkel 22.08.2010 - 08:37

1 respuesta

40

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

'hierarchical' = > false

Cuando especifica un 'hierarchical'=>false , obtiene el siguiente tipo de metabox, que es el formato de metabox que WordPress también usa para Publicar etiquetas :

'hierarchical'=>true

Sinembargo,cuandoespecifica'hierarchical'=>true,obtieneelsiguientetipodemetabox,queeselformatodemetaboxqueWordPresstambiénusaparaCategories:

Por supuesto, el ejemplo anterior también señala donde la categorización jerárquica puede ser un poco de una bolsa mixta porque en las subcategorías de la vida real 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 IMO categorizar cualquier cosa a la perfección es casi imposible independientemente de cómo funciona WordPress. Así que Caveat Emptor!

En el registro personalizado de taxonomía, o "¿Por qué no se guarda?"

Si bien no estás directamente relacionado con la pregunta, si eres un novato que está probando taxonomías personalizadas ( o un desarrollador experimentado que no presta atención, como me pasó a mí cuando escribí esto. ) es es probable que intentes agregar register_taxonomy() como el código que ves en la pregunta directamente en el archivo functions.php de tu tema. ¡Ups!

Si agrega el código directamente en functions.php , su metabox se mostrará, pero no guardará los términos recién agregados (y en la forma 'heirarchical'=>true del metabox, los términos existentes no se cargarán con las casillas de verificación). Esto se debe a que necesita registrar taxonomías personalizadas (y tipos de publicaciones personalizadas) dentro de un gancho init , de esta manera:

<?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!

    
respondido por el MikeSchinkel 22.08.2010 - 08:42

Lea otras preguntas en las etiquetas