Diferența Dintre Taxonomiile Ierarhice și Non-Ierarhice

22 aug. 2010, 09:37:56
Vizualizări: 31.9K
Voturi: 37

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

1
Comentarii

Poți să explici și ce este ierarhic față de ce? Este grupul de taxonomii ierarhic față de tipul de postare? Sau este taxonomia individuală ierarhică față de grupul de taxonomii? Sunt puțin derutat de cuvântul ierarhic. Mulțumesc.

Dave Dave
24 ian. 2012 22:28:37
Toate răspunsurile la întrebare 1
2
47

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:

Metabox-ul pentru Termeni de Taxonomie în Ecranul de Editare a Articolului când $hierarchical==false

'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:

Metabox-ul pentru Termeni de Taxonomie în Ecranul de Editare a Articolului când $hierarchical==true

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ă!

22 aug. 2010 09:42:03
Comentarii

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

Daniel Daniel
3 iun. 2014 18:11:40

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

MikeSchinkel MikeSchinkel
7 iun. 2014 06:17:38