La Differenza tra Tassonomie Gerarchiche e Non Gerarchiche
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.

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:
'hierarchical'=>true
Tuttavia, quando specifichi 'hierarchical'=>true
ottieni il seguente tipo di metabox, che è il formato di metabox che WordPress utilizza anche per Categorie:
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!

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

@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.
