La differenza tra tassonomie gerarchiche e non gerarchiche?


34

La domanda è "Qual è la differenza tra tassonomie gerarchiche e non gerarchiche?" Questa domanda inizialmente mi ha lasciato perplesso, quindi ho pensato che sarebbe stata una buona idea mostrare la differenza agli altri navigando sul sito in cerca di distinzione.

In particolare la domanda si riferisce hierarchicalall'argomento passato alla register_taxonomy()funzione. Più specificamente, qual è la differenza tra questo:

'hierarchical' => false

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

E questo?

'hierarchical' => true

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

Nota che andrò avanti e risponderò alla mia domanda, ma non la segnerò come migliore a meno che nessun altro faccia un passo avanti con una risposta davvero buona. Anche il mio istinto mi dice che potrei non aver catturato ogni distinzione tra le due dicotomie, quindi in caso contrario fateci sapere cosa mi sono perso.


Puoi anche spiegare cosa è gerarchico in cosa? Il gruppo di tassonomia è gerarchico rispetto al tipo di post? O la tassonomia individuale è gerarchica rispetto al gruppo di tassonomia? Sono solo scacciato dalla parola gerarchica immagino. Grazie.
Dave,

Risposte:


42

La semplice risposta è che i termini nelle tassonomie gerarchiche possono avere termini figlio . Ma cos'altro?

'Gerarchico' => false

Quando si specifica un 'hierarchical'=>falsesi ottiene il seguente tipo di metabox che è il formato metabox che WordPress utilizza anche per i post tag :

Termine tassonomia Metabox nella schermata Post Edit quando $ hierarchical == false

'Gerarchico' => true

Tuttavia quando specifichi 'hierarchical'=>trueottieni il seguente tipo di metabox che è il formato metabox che WordPress usa anche per le Categorie :

Termine tassonomia Metabox nella schermata Modifica post quando $ hierarchical == true

Ovviamente l'esempio sopra riportato indica anche dove la categorizzazione gerarchica può essere un po 'un miscuglio perché nella vita reale le sottocategorie spesso si applicano a molte categorie principali. Anche se così tanti "genitori" non è il modo in cui le tassonomie gerarchiche funzionano in WordPress, ma la classificazione IMO di qualcosa di perfettamente è quasi impossibile indipendentemente da come funziona WordPress. Quindi Caveat Emptor!

Sulla registrazione della tassonomia personalizzata o "Perché non si risparmia?"

Anche se non sei direttamente correlato alla domanda se sei un principiante che prova tassonomie personalizzate ( o uno sviluppatore esperto che non presta attenzione come è successo a me quando l'ho scritto! ) È probabile che proverai ad aggiungere register_taxonomy()come il codice vedi nella domanda direttamente nel functions.phpfile del tuo tema . Oops!

Se aggiungi il codice direttamente nel functions.phptuo metabox verrà visualizzato, ma non salverà i termini appena aggiunti (e nella 'heirarchical'=>trueforma del metabox i termini esistenti non verranno caricati con le caselle di controllo.) Questo perché devi registrare tassonomie personalizzate ( e tipi di post personalizzati) all'interno di un inithook, in questo modo:

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

Spero che sia di aiuto!


Una tassonomia gerarchica è la stessa cosa di una categoria personalizzata? E una tassonomia non gerarchica è la stessa cosa di un tag personalizzato?
Daniel

1
@ ravensfan55222 - Non esattamente, ma quasi. Invece di una "tassonomia gerarchica" uguale a una categoria personalizzata, il sistema di classificazione delle categorie incorporato è solo una delle tante tassonomie gerarchiche. Allo stesso modo i tag (Post) sono solo un esempio di tassonomia non gerarchica. Più correttamente, "gerarchico" è solo un attributo di una tassonomia, come il modo in cui un'etichetta è un attributo giusto di una tassonomia o il colore è un attributo di un'auto. Potrebbe essere quello che volevi dire, ma volevo chiarire se no.
MikeSchinkel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.