La Differenza tra Tassonomie Gerarchiche e Non Gerarchiche

22 ago 2010, 09:37:56
Visualizzazioni: 31.9K
Voti: 37

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 ad altri utenti che cercano di capire questa distinzione.

Nello specifico, la domanda si riferisce all'argomento hierarchical passato alla funzione register_taxonomy(). Più precisamente, qual è la differenza tra questo:

'hierarchical' => false

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

E questo?

'hierarchical' => true

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

Nota che procederò a rispondere alla mia stessa domanda ma non la contrassegnerò come migliore risposta a meno che nessun altro fornisca una risposta davvero valida. Inoltre, il mio istinto mi suggerisce che potrei non aver catturato ogni distinzione tra le due dicotomie, quindi se ho tralasciato qualcosa, fatecelo sapere.

1
Commenti

Puoi anche spiegare cosa è gerarchico rispetto a cosa? La tassonomia-gruppo è gerarchica rispetto al tipo di post? Oppure la singola tassonomia è gerarchica rispetto alla tassonomia-gruppo? Sono un po' confuso dalla parola gerarchico, credo. Grazie.

Dave Dave
24 gen 2012 22:28:37
Tutte le risposte alla domanda 1
2
47

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

'hierarchical'=>false

Quando specifichi 'hierarchical'=>false ottieni il seguente tipo di metabox, che è il formato di metabox che WordPress utilizza anche per Tag degli articoli:

Metabox dei Termini della Tassonomia nella Schermata di Modifica dell'Articolo quando $hierarchical==false

'hierarchical'=>true

Tuttavia, quando specifichi 'hierarchical'=>true ottieni il seguente tipo di metabox, che è il formato di metabox che WordPress utilizza anche per Categorie:

Metabox dei Termini della Tassonomia nella Schermata di Modifica dell'Articolo quando $hierarchical==true

Naturalmente l'esempio sopra evidenzia anche come la categorizzazione gerarchica possa essere un po' problematica, perché nella vita reale le sottocategorie spesso si applicano a molte categorie genitore. Anche così, permettere "molti genitori" non è come funzionano le tassonomie gerarchiche in WordPress, ma secondo me categorizzare qualsiasi cosa perfettamente è quasi impossibile indipendentemente da come funziona WordPress. Quindi Caveat Emptor!

Sulla Registrazione di Tassonomie Personalizzate, o "Perché Non Si Salva?"

Sebbene non direttamente correlato alla domanda, se sei un principiante che prova le tassonomie personalizzate (o uno sviluppatore esperto che non sta prestando attenzione, come è successo a me quando ho scritto questo!), è probabile che tu provi ad aggiungere register_taxonomy() come il codice che vedi nella domanda direttamente nel file functions.php del tuo tema. Oops!

Se aggiungi il codice direttamente in functions.php, il tuo metabox verrà visualizzato ma non salverà i termini appena aggiunti (e nella forma del metabox 'hierarchical'=>true i tuoi termini esistenti non verranno caricati con le checkbox). Questo perché è necessario registrare le tassonomie personalizzate (e i tipi di post personalizzati) all'interno di un hook init, 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'           => 'Genere del Film',
      'query_var'       => 'movie-genre',
      'rewrite'         => array('slug' => 'generi' ),
    ));
}

Spero che questo aiuti!

22 ago 2010 09:42:03
Commenti

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

Daniel Daniel
3 giu 2014 18:11:40

@ravensfan55222 - Non esattamente, ma quasi. Invece di considerare una "tassonomia gerarchica" come la stessa cosa di una categoria personalizzata, il sistema di classificazione predefinito delle Categorie è solo uno dei molti potenziali tipi di tassonomie gerarchiche. Allo stesso modo, i Tag (degli articoli) sono solo un esempio di tassonomia non gerarchica. Più correttamente, "gerarchica" è solo un attributo di una tassonomia, proprio come un'etichetta è solo un attributo di una tassonomia o il colore è un attributo di un'auto. Forse era questo che intendevi, ma volevo chiarire in caso contrario.

MikeSchinkel MikeSchinkel
7 giu 2014 06:17:38