Diferența Dintre Taxonomiile Ierarhice și Non-Ierarhice
Întrebarea este "Care este Diferența Dintre Taxonomiile Ierarhice și Non-Ierarhice?" Această întrebare m-a pus în dificultate la început, așa că m-am gândit că ar fi o idee bună să explic diferența pentru alții care caută această distincție pe site.
Mai exact, întrebarea se referă la argumentul hierarchical
transmis funcției register_taxonomy()
. Mai specific, care este diferența dintre aceasta:
'hierarchical' => false
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => false,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
Și aceasta?
'hierarchical' => true
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => true,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
Notă: Voi răspunde la propria mea întrebare, dar nu o voi marca ca fiind cea mai bună dacă altcineva vine cu un răspuns mai bun. De asemenea, instinctul îmi spune că s-ar putea să nu fi surprins toate diferențele dintre cele două dihotomii, așa că vă rog să ne anunțați dacă am omis ceva.
Răspunsul simplu este că termenii din taxonomiile ierarhice pot avea termeni copil. Dar ce altceva?
'hierarchical'=>false
Când specifici 'hierarchical'=>false
vei obține următorul tip de metabox, care este același format pe care WordPress îl folosește și pentru Etichetele Articolelor:
'hierarchical'=>true
Totuși, când specifici 'hierarchical'=>true
vei obține următorul tip de metabox, care este același format pe care WordPress îl folosește și pentru Categorii:
Desigur, exemplul de mai sus evidențiază și unde categorizarea ierarhică poate fi o problemă, deoarece în viața reală subcategoriile se aplică adesea mai multor categorii părinte. Chiar dacă permisiunea pentru "mai mulți părinți" nu funcționează așa în taxonomiile ierarhice din WordPress, personal consider că o categorizare perfectă este aproape imposibilă indiferent de cum funcționează WordPress. Așadar, Caveat Emptor! (Fii atent!)
Despre Înregistrarea Taxonomiilor Personalizate sau "De ce nu se Salvează?"
Deși nu este direct legat de întrebare, dacă ești începător și încerci să folosești taxonomii personalizate (sau un dezvoltator experimentat care nu este atent, cum mi s-a întâmplat și mie când am scris asta!), este posibil să încerci să adaugi register_taxonomy()
direct în fișierul functions.php
al temei tale. Hopa!
Dacă adaugi codul direct în functions.php
, metabox-ul tău va apărea, dar nu îți va salva termenii nou adăugați (iar în forma 'heirarchical'=>true
a metabox-ului, termenii existenți nu se vor încărca cu casete de bifat). Asta se întâmplă pentru că trebuie să înregistrezi taxonomiile personalizate (și tipurile de postări personalizate) în interiorul unui hook init
, astfel:
<?php
add_action('init','register_movie_genre_taxonomy');
function register_movie_genre_taxonomy() {
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => true,
'label' => 'Gen Film',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
}
Sper că acest lucru te ajută!

Este o taxonomie ierarhică același lucru cu o categorie personalizată? Și este o taxonomie neierarhică același lucru cu o etichetă personalizată?

@ravensfan55222 - Nu chiar, dar aproape. În loc să considerăm că o 'taxonomie ierarhică' este același lucru cu o categorie personalizată, sistemul încorporat de clasificare Categorii este doar una dintre multiplele taxonomii ierarhice posibile. Similar, Etichetele (de Postare) sunt doar un exemplu de taxonomie neierarhică. Mai corect spus, "ierarhic" este doar un atribut al unei taxonomii, la fel cum o etichetă este doar un atribut al unei taxonomii sau culoarea este un atribut al unei mașini. Poate că la asta te refereai, dar am vrut să clarific dacă nu era cazul.
