Weby postavené na WordPressu se skládají ze tří základních elementů:
- Vlastní instalace WordPressu.
- Obsah adresáře wp-content, který obsahuje šablony, pluginy a nahrané soubory.
- Databáze, která obsahuje data.
Mnoho běžných uživatelů WordPressu nikdy nepřijde do kontaktu s databází a dost možná o ní ani nic neví. Když WordPress zobrazí stránku, ať už domácí stranu, příspěvek nebo stránku, vždy přistupuje k databázi a načítá z ní data, která tam editor nebo administrátor vložil.
V celé této sérii článků se podíváme na různé 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
V tomto prvním článku se podíváme na databázové tabulky a na jejich vztahy s různými typy obsahu. Také se podíváme na to, co je kde uloženo.
Typy obsahu u WordPressu
Protože tabulky v databázi uchovávají obsah, musíte nejdříve pochopit co ten obsah je. U WordPressu se můžete setkat s několika typy obsahu:
- příspěvky
- stránky
- vlastní druhy příspěvků
- přílohy
- odkazy
- položky menu (jsou uloženy jako individuální příspěvek)
Tyto typy obsahu mají data spojena s:
- rubriky
- štítky
- vlastní taxonomie a položky
- metadata příspěvků
Kromě nich existují i další typy obsahu, které jsou uloženy zvlášť. Jedná se o:
- widgety
- nastavení
- uživatele
- stránky (pouze u multisite)
- obsah vložený „natvrdo v kódu“ (přidán k šabloně nebo pluginu)
- obsah uložený jinde (feed, stream atd..)
Všechny tyto typy obsahu jsou uloženy někde v databázi (nebo, jak si ukážeme, výjimečně v šabloně nebo pluginu). Může k nim být přistupováno samostatně nebo současně (například streamovaný obsah nakódovaný do příspěvku). Také mohou být propojeny s daty v dalších tabulkách. Například data o příspěvku budou propojena s daty o uživatelích, kteří jsou ve WordPressu označeni jako autoři příspěvku.
Databázová struktura WordPressu
WordPress používá velké množství databázových tabulek. Tyto tabulky mají nastavené relace, díky kterým se snižuje počet skladovaných dat – jedná se o vztah 1:N. To znamená, že jeden uživatel může mít několik příspěvků, u kterých je uveden jako autor. Díky tomuto přístupu se ušetří místo. Kdyby totiž WordPress skladoval všechna uživatelská data zvlášť pro každého uživatele došlo by k tomu, že se bude spousta dat opakovat a nároky na místo budou mnohonásobně větší.
Diagram níže je převzat z WordPress Kodexu a ukazuje databázové tabulky a jejich propojení:
Většina tabulek je propojena s dalšími pomocí jednoho pole. Toto pole je unikátní identifikátor pro každý záznam, jako například post_id.
Podrobněji to najdete popsané v tabulce níže:
Tabulka | Uložená data | Propojeno s |
---|---|---|
wp_posts | Příspěvky, stránky, přílohy, revize a menu | wp_postmeta (via post_id) wp_term_relationships(via post_id) |
wp_postmeta | Metadata pro každý příspěvek | wp_posts (via post_id) |
wp_comments | Komentáře | wp_posts (via post_id) |
wp_commentmeta | Metadata pro každý komentář | wp_comments (via comment_id) |
wp_term_relationships | Vztah mezi příspěvky a taxonomií | wp_posts (via post_id) wp_term_taxonomy (via term_taxonomy_id) |
wp_term_taxonomy | Taxonomie (včetně rubrik a štítků) | wp_term_relationships (via term_taxonomy_id) |
wp_terms | Vaše rubriky, štítky a položky přiřazené k vlastním taxonomiím | wp_term_taxonomy (via term_id) |
wp_links | Seznam odkazů (pokud nějaký máte) | wp_term_relationships (via link_id) |
wp_users | Uživatelé | wp_posts (via post_author) |
wp_user_meta | Metadata pro každého uživatele | wp_users (via user_id) |
wp_options | Nastavení stránky | n/a |
Několik věcí, které byste měli vědět:
- Tabulky v databázi mají ve výchozím nastavení prefix wp_. Tento prefix můžete změnit při instalaci WordPressu.
- Centrální tabulka je wp_posts. V ní je uložena většina vašich dat a (většinou) drží vše pohromadě.
- Pouze wp_options není spojena s další tabulkou. V této tabulce je uloženo nastavení stránky a WordPress instalace. Ani jedna z věcí není spojena s daty o příspěvcích nebo uživatelích.
- Tabulky wp_users a wp_comments nejsou propojeny. Ačkoliv je možné specifikovat, aby uživatelé museli být před napsáním komentáře registrováni. WordPress totiž neukládá data o každém uživateli, který vložil komentář.
- WordPress Multisite má některé další tabulky, které si projdeme později.
Propojení obsahu a tabulek v databázi
Podívejte se, jaké typy obsahu WordPressu ukládá která tabulka v databázi.
Druh obsahu | Tabulky |
---|---|
příspěvky | wp_posts |
stránky | wp_posts |
vlastní typy příspěvků | wp_posts |
přílohy | wp_posts |
odkazy | wp_links |
menu | wp_posts |
rubriky | wp_terms |
štítky | wp_terms |
vlastní taxonomie | wp_term_taxonomy |
hierarchie | wp_terms |
metadata příspěvků | wp_post_meta |
widgety | wp_options |
nastavení | wp_options |
uživatelé | wp_users |
"na pevno vložený" obsah | wp_posts (pokud je obsaženo v příspěvku) wp_options (pokud je obsaženo ve widgetu) Soubory šablony a pluginu (pokud je obsaženo v kódu) |
obsah třetích stran | wp_posts (pokud je obsaženo v příspěvku) wp_options (pokud je obsaženo ve widgetu) Soubory šablony a pluginu (pokud je obsaženo v kódu) |
Můžete si všimnout, že zde nejsou obsaženy všechny tabulky. Je to z toho důvodu, protože některé z nich jsou použity k uložení metadat a další obsahují vztahy, které si rozebereme v dalších návazných článcích.
Shrnutí
Doufám, že nyní budete lépe rozumět, jak a kde WordPress ukládá různé typy dat a jakou má databázovou strukturu.
V dalším článku se podíváme na vztahy mezi daty a detailněji se podíváme na to, jak jsou konkrétní tabulky propojeny a jak jsou některé z nich použity pouze k ukládání dat o vztazích mezi nimi.
Dobrý den, řeším zmenšení DB a našel jsem 2 tabulky, které mají opravdu hodně a nejsem si jist, že tam musí být, konkrétně wp_prli_clicks (310MB) a wp_statpress (230MB). Poradí někdo, k čemu jsou a jak je zmenšit? Celkovou velikost db mám 640MB. Díky