A diferença entre taxonomias hierárquicas e não hierárquicas?

33

A questão é "Qual é a diferença entre taxonomias hierárquicas e não-hierárquicas?" Essa questão realmente me atrapalhou no começo, então achei que seria uma boa ideia para mostrar a diferença para outras pessoas que navegam no site em busca da distinção.

Especificamente, a questão está se referindo ao argumento hierarchical passado para a função register_taxonomy() . Mais especificamente, qual é a diferença entre isso:

'hierárquico' = > falso

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

E isso?

'hierárquico' = > verdadeiro

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

Note que vou seguir em frente e responder a minha própria pergunta, mas não a marcarei da melhor maneira, a menos que ninguém mais apresente uma resposta realmente boa. Além disso, minha intuição me diz que eu poderia não ter capturado todas as distinções entre as duas dicotomias, então, se não, por favor, deixe-nos saber o que eu senti falta.

    
por MikeSchinkel 22.08.2010 / 08:37
fonte

1 resposta

40

A resposta simples é que os termos nas taxonomias hierárquicas podem ter termos filhos . Mas o que mais?

'hierárquico' = > falso

Quando você especifica um 'hierarchical'=>false , obtém o seguinte tipo de metabox, que é o formato metabox que o WordPress também usa para Post Tags :

'hierárquico'=>true

Noentanto,quandovocêespecifica'hierarchical'=>true,obtémoseguintetipodemetabox,queéoformatometaboxqueoWordPresstambémusaparaCategorias:

É claro que o exemplo acima também indica onde a categorização hierárquica pode ser um pouco confusa, porque, na vida real, as subcategorias geralmente se aplicam a muitas categorias pai. Mesmo assim, "muitos pais" não é como as taxonomias hierárquicas funcionam no WordPress, mas a IMO categorizando qualquer coisa perfeitamente é quase impossível independentemente de como o WordPress funciona. Então Caveat Emptor!

Em registro de taxonomia personalizada ou "Por que não é possível salvar?"

Embora não esteja diretamente relacionado à pergunta se você é um novato experimentando taxonomias personalizadas, ( ou um desenvolvedor experiente que não está prestando atenção como aconteceu comigo quando eu escrevi isso! ) É provável que você tente adicionar register_taxonomy() como o código que você vê na pergunta diretamente no arquivo functions.php do seu tema. Opa!

Se você adicionar o código diretamente em functions.php , seu metabox será exibido, mas ele não salvará seus termos recém-adicionados (e na forma 'heirarchical'=>true do metabox, seus termos existentes não serão carregados com caixas de seleção.) Isso porque você precisa registrar taxonomias personalizadas (e tipos de post personalizado) dentro de um init hook, assim:

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

    
por MikeSchinkel 22.08.2010 / 08:42
fonte