it-swarm-pt.tech

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

A questão é "Qual é a diferença entre taxonomias hierárquicas e não hierárquicas?" Esta questão realmente me impressionou no início, então eu achei que seria uma boa idéia mostrar a diferença para os outros navegando no site procurando a 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 isto?

'hierárquico' => verdadeiro

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

Note que eu vou ir em frente e responder a minha própria pergunta, mas não vou marcá-la da melhor forma, a menos que ninguém mais dê uma resposta realmente boa. Além disso, meu instinto me diz que talvez eu não tenha captado todas as distinções entre as duas dicotomias, portanto, se não, por favor, deixe-nos saber o que eu perdi.

33
MikeSchinkel

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

'hierárquico' => falso

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

Taxonomy Term Metabox in the Post Edit Screen when $hierarchical==false

'hierárquico' => verdadeiro

No entanto, quando você especifica 'hierarchical'=>true, obtém o seguinte tipo de metabox, que é o formato metabox que o WordPress também usa para Categorias:

Taxonomy Term Metabox in the Post Edit Screen when $hierarchical==true

É 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 de pais. 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!

No registro de taxonomia personalizada, ou "Por que não 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 adicionando 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). taxonomias (e tipos de post personalizado) dentro de um gancho init, 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 isto ajude!

40
MikeSchinkel