it-swarm-eu.dev

Rozdíl mezi hierarchickými a nehierarchickými taxonomiemi?

Otázkou je "Jaký je rozdíl mezi hierarchickými a nehierarchickými taxonomiemi?" Tato otázka mě zpočátku napjala, takže jsem si myslel, že by bylo dobré ukázat rozdíl ostatním, kteří na webu hledají rozdíl.

Konkrétně se tato otázka týká argumentu hierarchical předaného funkci register_taxonomy(). Jaký je rozdíl mezi tímto:

'hierarchický' => false

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

A tohle?

'hierarchický' => true

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

Poznámka: Budu pokračovat a odpovídat na svou vlastní otázku, ale neoznačím to jako nejlepší, pokud nikdo jiný nevstoupí s opravdu dobrou odpovědí taky. Také můj pocit střeva mi říká, že jsem nemusel zachytit každý rozdíl mezi těmito dvěma dichotomiemi, takže pokud ne, dejte nám vědět, co mi chybí.

33
MikeSchinkel

Jednoduchá odpověď je, že termíny v hierarchických taxonomiích mohou mít dětské výrazy . Ale co jiného?

'hierarchický' => false

Když zadáte 'hierarchical'=>false, dostanete následující typ metaboxu, který je ve formátu metabox WordPress také používá pro Post Tagy :

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

'hierarchický' => true

Když však zadáte 'hierarchical'=>true, získáte následující typ metaboxu, který je ve formátu metabox WordPress také používá pro Kategorie :

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

Výše uvedený příklad samozřejmě také poukazuje na to, kde hierarchická kategorizace může být trochu smíšeného sáčku, protože v reálném životě se podkategorie často vztahují na mnoho nadřazených kategorií. Dokonce i tak tolowing "mnoho rodičů" není, jak hierarchická taxonomie funguje ve WordPressu, ale IMO kategorizuje cokoliv dokonale je téměř nemožné bez ohledu na to jak funguje WordPress. Takže Caveat Emptor!

Na Vlastní registrace Taxonomie, nebo "Proč to neukládá?"

I když přímo nesouvisí s otázkou, zda jste nováček vyzkoušející vlastní taxonomie, ( nebo zkušený dev, který nevěnuje pozornost, jako se mi stalo, když jsem to napsal! ) je pravděpodobné, že jste vy Zkuste zkusit přidat register_taxonomy() jako kód, který vidíte v dotazu, přímo do souboru functions.php vašeho tématu. Jejda!

Pokud tento kód přidáte přímo do souboru functions.php, zobrazí se vaše metabox, ale neuloží nově přidané výrazy (a ve tvaru 'heirarchical'=>true metaboxu se vaše stávající výrazy nezaškrtnou pomocí zaškrtávacích políček). taxonomie (a vlastní typy příspěvků) uvnitř háčku init, jako například:

<?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' ),
    ));
}

Snad to pomůže!

40
MikeSchinkel