Taxonomie je to, co povznáší WordPress nad úroveň běžného blogovacího nástroje a řadí ho mezi redakční systémy.
Ale jak se ukládá v databázi?
Taxonomie a položky jsou skvělé vlastnosti WordPressu, které vašim stránkám přidávají větší flexibilitu. Týkají se dvou typů obsahu: příspěvků a odkazů. V databázové struktuře je mezi nimi vztah 1:n. Jeden příspěvek může být propojen s několika položkami v několika taxonomiích a jedna položka může být přiřazena k několika příspěvkům nebo odkazům.
V této sérii článků se zabýváme různými aspekty WordPress databáze. Celá série bude mít osm částí:
- Úvod
- Vztahy mezi daty
- Typy dat
- Uživatelská data
- Metadata
- Taxonomie, rubriky, štítky a položky
- Tabulka Options
- WordPress Multisite data
Začněme definicí, protože pojem taxonomie a položka může být ve spojením velmi matoucí.
Definice
Taxonomie
Taxonomie je systém kategorizace a třídění věcí, obvykle hierarchicky. Nejznámější taxonomií je ta, kterou vytvořil Carl Linné a slouží ke třídění živých organismů.
Ve WordPressu slouží taxonomie pro klasifikování vašich dat a jejich seskupení do skupin a podskupin.
WordPress obsahuje tři zabudované taxonomie:
- rubriky
- štítky
- rubriky odkazů
Rubriky a štítky jsou podobné příspěvkům a stránkám. Jedná se o stejný typ obsahu (taxonomie), ale ve výchozím nastavení se chovají rozdílně v tom, že rubriky mají hierarchickou strukturu a štítky ne.
Taxonomie u rubrik odkazů pracuje podobně jako štítky a může být teoreticky použita pro jakýkoliv typ objektu, nicméně ve výchozím nastavení se nezobrazuje a musí být nejprve aktivována.
Pomocí vlastních taxonomií můžete do WordPressu můžete přidat tolik dalších taxonomií, kolik jen chcete. Jejich chování poté bude podobné rubrikám a štítkům. Vlastní taxonomie budou mít položky. Všechny vaše taxonomie budou mít stejný status, jako ostatní zabudované taxonomie. Je to podobné, jako když vytváříte vlastní typy příspěvků.
Položky
Každá taxonomie má položky, aby se daly třídit data. Rubrika je pouze položka v taxonomii rubrik a štítek je pouze položka v taxonomii štítků. Když vytvoříte vlastní taxonomie, musíte poté pro ni vytvořit položky. To můžete udělat přes WordPress administraci nebo použitím funkce wp_insert_term().
Položky mohou být skvělé v kombinaci s vlastními dotazy. Například s nimi můžete vytvářet vlastní šablony, kde budete zobrazovat příspěvky s několika položkami, které se dají podle nich třídit.
Jak WordPress ukládá taxonomie a položky
Jak jsme si již řekli v předchozích dílech seriálu, WordPress používá vztah m:n. Tento vztah je vytvořen za použití tří tabulek:
- wp_term_relationships
- wp_term_taxonomy
- wp_terms
Tyto tabulky jsou společně s propojenými tabulkami wp_post a wp_links zobrazeny níže:
Pojďme se podívat na to, jak každá tabulka funguje.
Tabulka wp_terms
Tabulka wp_terms ukládá všechny jednotlivé položky pro rubriky, štítky, rubriky odkazů a vlastní taxonomie. Má čtyři pole:
- term_id je unikátní identifikátor
- name (jméno)
- slug
- term_group je pole, které WordPress v současné době nevyužívá a tak jej můžete klidně ignorovat
Tabulka wp_term_taxonomy
Tabulka wp_term_taxonomy ukládá další data o položkách a taxonomiích. Má šest polí:
- term_taxonomy_id je unikátní identifikátor
- term_id představuje unikátní identifikátor položky (z tabulky wp_terms), která je propojena s tímto záznamem
- taxonomy je jméno taxonomie, kam položka spadá
- description (popis)
- parent odkazuje na nadřazenou položku, pokud má taxonomie hierarchickou strukturu a existuje nadřazená položka
- count počet příspěvků v položce
Ve spoustě WordPress instalací bude jeden záznam v tabulce wp_term_taxonomy pro stejnou položku v tabulce wp_terms, ale může se stát, že zde budete mít více než jen jeden záznam pro každou položku. To se může stát v případě, že vytvoříte dvě položky se stejným jménem, ale rozdílným slugem.
To znamená, že vztah mezi těmito tabulkami je 1:n. Jeden záznam v tabulce wp_term může být propojen s několika záznamy v tabulce wp_term_taxonomy, ale každý záznam v tabulce wp_term_taxonomy je propojen pouze s jedním záznamem v tabulce wp_terms.
Tabulka wp_term_relationships
Tabulka wp_term_relationships je nezbytná pro tvorbu vztahu m:n mezi objekty a položkami. Má pouze tři pole:
- object_id je propojen s post_id v tabulce wp_posts nebo link_id v tabulce wp_links
- term_taxonomy_id je propojen se stejným polem v tabulce wp_term_taxonomy
- term_order je pořadí, ve kterám byla položka přiřazena k objektu. Toto se používá pouze, pokud specifikujete řadící argument, když registrujete taxonomie. Ve výchozím nastavení je tato funkce vypnutá a pole má hodnotu 0.
Protože každý objekt a položka může souviset s několika záznamy v tublce wp_term_relationships, je zde vytvořen vztah m:n.
Shrnutí
Vztah mezi objekty (například příspěvky a odkazy) a položkami je unikátní, a nejen protože je to jediný m:n vztah ve WordPressu.
Pochopením, jak tento vztah funguje a kde jsou data uložena, vám pomůže pochopit, jak taxonomie a položky pracují a jak správně použít funkce, které s nimi souvisí.