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

34

A pergunta é "Qual é a diferença entre taxonomias hierárquicas e não hierárquicas?" Esta pergunta realmente me surpreendeu a princípio, então achei que seria uma boa ideia mostrar a diferença para outras pessoas que navegam no site procurando a distinção.

Especificamente, a pergunta está se referindo ao hierarchicalargumento passado para a register_taxonomy()função. 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' ),
));

Observe que vou seguir em frente e responder à minha própria pergunta, mas não a marcará como a menos que ninguém mais dê uma resposta muito boa também. Além disso, meu pressentimento me diz que talvez eu não tenha captado todas as distinções entre as duas dicotomias. Se não, por favor, deixe-nos saber o que eu perdi.

MikeSchinkel
fonte
Você também pode explicar o que é hierárquico e o quê? O grupo de taxonomia é hierárquico para o tipo de postagem? Ou a taxonomia individual é hierárquica para o grupo de taxonomia? Estou impressionado com a palavra hierárquica, eu acho. Obrigado.
Dave Dave

Respostas:

42

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

'hierárquico' => falso

Quando você especifica a, 'hierarchical'=>falseobtém o seguinte tipo de metabox, que é o formato metabox que o WordPress também usa para Tags de postagem :

Metabox do termo de taxonomia na tela Pós-edição quando $ hierarchical == false

'hierárquico' => verdadeiro

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

Metabox do termo de taxonomia na tela Pós-edição quando $ hierarchical == true

Obviamente, 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 principais. Mesmo assim, permitir "muitos pais" não é como as taxonomias hierárquicas funcionam no WordPress, mas a IMO categorizar qualquer coisa perfeitamente é quase impossível, independentemente de como o WordPress funciona. Então Advertência Emptor!

No registro de taxonomia personalizada ou "Por que ele não salva?"

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 escrevi isso! ), É provável que você tente adicionar register_taxonomy()como o código você vê a pergunta diretamente no functions.phparquivo do seu tema . Opa!

Se você adicionar o código diretamente à functions.phpsua metabox, será exibido, mas não salvará os termos recém-adicionados (e, na 'heirarchical'=>trueforma da metabox, os termos existentes não serão carregados com as caixas de seleção.) Isso ocorre porque você precisa registrar taxonomias personalizadas ( e tipos de postagem personalizados) dentro de um initgancho, da seguinte forma:

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

MikeSchinkel
fonte
Uma taxonomia hierárquica é a mesma coisa que uma categoria personalizada? E uma taxonomia não hierárquica é a mesma coisa que uma tag personalizada?
Daniel
11
@ ravensfan55222 - Não exatamente, mas quase. Em vez de uma 'taxonomia hierárquica' ser a mesma de uma categoria personalizada, o sistema interno de classificação de categorias é apenas uma das muitas taxonomias hierárquicas em potencial. Da mesma forma (Post) Tags são apenas um exemplo de uma taxonomia não hierárquica. Mais corretamente, "hierárquico" é apenas um atributo de uma taxonomia, como um rótulo é apenas um atributo de uma taxonomia ou cor é um atributo de um carro. Pode ter sido o que você quis dizer, mas eu queria esclarecer se não.
precisa saber é o seguinte