V 1. části této série jsem ukázal, jak místně nainstalovat WordPress a jak importovat databázi WordPress do Vertabelo. V tomto článku se blíže podíváme na tabulky v databázi WordPress.
Rychlý pohled na model databáze WordPress a řídicí panel
V předchozím díle jsem importoval databázi WordPress do našeho online nástroje pro modelování databází. Pro informaci, struktura databáze je následující:
Než začneme, měli byste porozumět několika důležitým faktům o databázovém modelu WordPress:
- Každý web WordPress používá přesně stejnou strukturu databáze. Obsahuje 11 tabulek a každý web WordPress je používá na pozadí. Většina pluginů WordPress také používá databázi bez jakýchkoli změn v databázovém modelu. Model musí být dostatečně flexibilní, aby pojal všechny různé pluginy. Tvůrci pluginů mohou samozřejmě přidat vlastní tabulky pro konkrétní pluginy, pokud se struktura dat výrazně liší nebo pokud jejich plugin ukládá velké množství dat.
- Databáze WordPress postrádá omezení cizích klíčů . Důvodem je skutečnost, že WordPress používá úložiště MyISAM, které nepodporuje cizí klíče. Tabulky to obcházejí tím, že mají atributy, které ukládají nepropojené hodnoty podobné „cizímu klíči“, takže omezení cizího klíče nebude zkontrolováno databází. Například
post_author
atribut vwp_posts
tabulka je „odkaz“ na atribut „ID“ vwp_users
stůl. - Většina tabulek používá primární klíč s jedním sloupcem. Jmenují se buď jednoduše „ID“ (v
wp_users
awp_posts
tabulka) nebometa_id
/umeta_id
(v metatabulkách:wp_postmeta
,wp_commentmeta
awp_usermeta
), nebo kombinaci názvu tabulky a přípony „_id“ (všechny ostatní tabulky). Jedinou výjimkou z těchto pravidel jsouwp_term_relationships
tabulka, kde se primární klíč skládá ze dvou atributů:object_id
aterm_taxonomy_id
. Atributy, které jsou primárním klíčem nebo součástí primárního klíče, jsou typu bigint(20). Primární klíče s jedním atributem mají také vlastnost auto-increment nastavenou na „Ano“.
Příspěvky a stránky
Hlavním důvodem, proč používat WordPress, je vytvářet a manipulovat s obsahem a prezentovat jej veřejnosti. Za tímto účelem nám WordPress poskytuje dva typy obsahu:Stránky a Příspěvky .
Stránky se používají k zobrazení statického obsahu . Nepoužívají značky ani kategorie a nejsou uvedeny podle data. Také neumožňují komentáře nebo sdílení na sociálních sítích. Stránky mohou mít podstránky. O nás stránky jsou dobrými příklady tohoto typu.
Na druhé straně Příspěvky jsou uvedeny podle data a lze je uspořádat pomocí kategorií a značky . Příspěvky mohou být použity ve zdrojích RSS díky jejich chronologickému pořadí. Příspěvky nemohou mít „podpříspěvky“, ale komentáře a sdílení na sociálních sítích jsou možné. Příspěvky jsou v podstatě příspěvky na blogu. To je pochopitelné, protože WordPress se vyvinul z blogovací platformy.
Primární tabulka za obsahem na jakékoli stránce WordPress se nazývá wp_posts
:
WordPress používá wp_posts
tabulka pro ukládání stránek, příspěvků a příloh. Na tuto tabulku se můžeme dívat jako na jádro naší stránky, místo, kde je uložena většina obsahu. Je důležité zdůraznit, že přílohy jsou ve skutečnosti uloženy na disku a záznam v wp_posts
tabulka obsahuje další informace o tom (kdo a kdy to nahrál atd.).
Pole v wp_posts
tabulka jsou:
post_author
– odkaz nawp_users
tabulka označující autora příspěvku.post_date
– datum a čas, kdy byl záznam vložen do tabulky.post_date_gmt
– GMT/UTC datum a čas, kdy byl záznam vložen do tabulky.post_content
– skutečný obsah příspěvku.post_title
– název příspěvku.post_excerpt
– shrnutí obsahu.post_status
– aktuální stav příspěvku. WordPress používá 8 výchozích stavů:„Publikovat“, „Budoucnost“, „Koncept“, „Nevyřízeno“, „Soukromé“, „Koš“, „Automatický koncept“ a „Zdědit“.comment_status
– zapíná a vypíná komentáře u jednoho příspěvku nebo na celé stránce. Existují dvě možné hodnoty:„open“ a „closed“.ping_status
– identifikuje, zda příspěvek umožňuje pingbacky a trackbacky. Jakocomment_status
, může obsahovat pouze hodnoty „open“ a „closed“.post_password
– heslo použité k zobrazení příspěvku (volitelné).post_name
– lidsky čitelná adresa URLpost_title
.to_ping
– seznam adres URL, na které má WordPress posílat pingbacky, oddělených „\n“.pinged
– seznam adres URL, na které WordPress odeslal pingbacky, oddělených „\n“.post_modified
– poslední datum a čas, kdy byl příspěvek upraven.post_modified_gmt
– datum GMT/UTC propost_modified
.post_content_filtered
– používané pluginy k ukládání nákladných transformací obsahu příspěvků do mezipaměti.post_parent
– odkazuje na nadřazený příspěvek.guid
– Globální jedinečný identifikátor příspěvku; jeho trvalou adresu URL.menu_order
– používá se pro objednávání obsahu.post_type
– typ záznamu. Může obsahovat hodnoty „post“, „page“, „attachment“ nebo uživatelsky definované vlastní typy.post_mime_type
– typ nahraných souborů definovaný pouze pro příspěvky spost_type = attachment
. Může obsahovat hodnoty jako „image“, „application/pdf“ a „application/msword“.comment_count
– počet komentářů, pingbacků a zpětných odkazů k příspěvku.
Zde je snímek wp_posts
tabulka poté, co jsem přidal stránku „O Nikole Teslovi“:
Když se podíváme na wp_posts
tabulky, můžeme vidět několik verzí naší stránky. Záznam s ID = 1
má post_status = publish
, což znamená, že příspěvek je viditelný pro všechny. comment_status = closed
a ping_status = closed
označuje, že komentáře a ping jsou pro tento příspěvek zakázány.
Veškeré další informace o příspěvcích a stránkách jsou uloženy v wp_postmeta
tabulka:
Sloupce v této tabulce jsou následující:
meta_id
– primární klíč tabulky.post_id
– odkaz nawp_posts
stůl.meta_key
– popismeta_value
atribut.meta_value
– aktuální uložená hodnota.
wp_postmeta
tabulka je místo, kde jsou všechny informace, které nelze uložit do wp_posts
tabulka je uložena. Ukládá se jako páry klíč–hodnota, což je technika, která se často nazývá entita–atribut–hodnota (EAV). Tabulku mohou používat pluginy pro vlastní potřeby.
Taxonomie aplikace WordPress
Taxonomie je módní slovo, které v podstatě odkazuje na seskupování věcí dohromady. WordPress má několik vestavěných taxonomií pro seskupování příspěvků. Například kategorie a značky jsou vestavěné taxonomie WordPress. Do WordPressu můžete také přidat své vlastní taxonomie.
Taxonomie a jejich termíny jsou uloženy v tabulkách nazvaných wp_terms
, wp_term_taxonomy
a wp_term_relationships
.
wp_terms
tabulka ukládá seznam termínů používaných ke klasifikaci objektů na vašem webu WordPress:
Tato tabulka obsahuje všechny názvy značek a kategorií a také výrazy z našich vlastních taxonomií. Atributy jsou následující:
term_id
– primární klíč tabulky.name
– název termínu.slug
– URLname
.term_group
– používá se k seskupování výrazů.
Zde je obsah wp_terms
tabulka:
Termíny jsou k taxonomiím přiřazeny pomocí wp_term_taxonomy
tabulka:
Atributy v tabulce jsou:
term_taxonomy_id
– primární klíč tabulky.term_id
– odkaz nawp_terms
stůl.taxonomy
– název taxonomie.description
– popis termínu v dané konkrétní taxonomii.parent
– odkaz na nadřazený výraz vwp_terms
stůl.count
– počet objektů vwp_posts
tabulka, která používá tento termín v této taxonomii.
wp_term_taxonomy
tabulka nám umožňuje znovu použít stejný termín v různých taxonomích. Všimněte si, že záznam, kde term_id = 1
má taxonomy = category
, zatímco ostatní záznamy mají taxonomy = post_tag
.
Chcete-li spojit objekty uložené v wp_posts
a wp_term_taxonomy
tabulky, WordPress používá wp_term_relationships
tabulka:
Všimněte si, že toto je jediná tabulka v modelu, která má klíč složený z více než jednoho atributu.
wp_term_relationships
tabulka má následující atributy:
object_id
– odkaz nawp_posts
stůl.term_taxonomy_id
– odkaz nawp_term_taxonomy
stůl.term_order
– termín objednávka pro konkrétní předmět.
Máme zde šest záznamů, které spojují šest záznamů z wp_term_taxonomy
tabulka s příspěvkem (object_id = 6
).
Komentáře a datové modelování WordPress
Podařilo se nám umístit nějaký obsah na naši stránku WordPress. To je hezké, ale ve většině případů chceme získat zpětnou vazbu od veřejnosti. A to je role funkce komentáře.
Pro zobrazení komentářů k příspěvkům můžeme jednoduše použít „Zanechat komentář“ nebo kliknout na „X komentář“ (kde X znamená počet komentářů k příspěvku).
Náš první příspěvek už má jeden komentář. Když na něj klikneme, uvidíme, že jde o automatický komentář způsobený pingbackem. K tomuto příspěvku přidáme ještě jeden komentář:
Nyní vidíme dva komentáře k našemu příspěvku, ale co se za tím vším v databázi skrývá?
Z názvu tabulky můžete uhodnout, že wp_comments
tabulka se používá k ukládání komentářů na naší stránce WordPress:
Atributy jsou většinou samozřejmé, ale přesto se na některé z nich podíváme blíže.
comment_post_ID
je odkaz na wp_posts
stůl; označuje, který příspěvek obdržel komentáře. U prvního komentáře vidíme, že to byl vlastně pingback a že „autor“ je jiný příspěvek. U druhého komentáře vidíme, že jsem autor. Všimněte si také comment_agent
obsahuje některé základní informace o systému a počítači použitém k odeslání komentáře.
Hlavní myšlenkou všech tří metatabulek v modelu je ukládat data, která nechceme ukládat do naší primární tabulky. wp_commentmeta
souvisí s wp_comments
stejným způsobem jako wp_postmeta
tabulka souvisí s wp_posts
tabulka.
Zobrazení uživatelů WordPress
Jakmile je naše stránka online, může ji vidět kdokoli. Uživatelé WordPressu jsou ti, kteří podle stavu oprávnění mohou provádět změny na našem webu a jeho obsahu.
Nyní se podíváme do wp_users
a wp_usermeta
tabulky v databázi MySQL.
Jak se očekávalo, wp_users
výše uvedená tabulka ukládá základní údaje pro všechny uživatele registrované na našem webu WordPress. Všimněte si, že user_pass
je zašifrováno a nový uživatel má user_activation_key
atribut vyplněn, zatímco edrkusic má toto pole prázdné.
Zatímco atributy jsou uvedeny v wp_users
tabulka je to, co bychom očekávali na jakémkoli webu WordPress, wp_usermeta
tabulka se používá k ukládání hodnot, které mohou být specifické pro určitý projekt:
Všimněte si například, že záznam s umeta_id = 25
obsahuje hodnotu „nějaké biografické informace“ , stejný text, který jsme zadali do řídicího panelu při úpravě NewUser. user_id
atribut v tomto záznamu má hodnotu 2 , které odpovídá ID nového uživatele v wp_users
stůl. Je zřejmé, že user_id
je odkaz na wp_users
tabulka.
Odkazy a možnosti ve WordPressu
Myšlenka za wp_links
tabulka slouží k ukládání odkazů na jiné stránky:
Mít odkazy na jiné stránky bylo na začátku éry blogů velmi populární; v dnešní době se používá stále méně. Od verze WordPressu 3.5 byla správa odkazů dokonce odstraněna z administrátorského rozhraní. Přesto je tato tabulka zachována, aby byla zajištěna kompatibilita se staršími verzemi.
wp_options
tabulka ukládá data o instalaci WordPress, konfiguraci webu, motivu, pluginech a widgetech:
Používá se také k ukládání dočasných dat uložených v mezipaměti. V této tabulce je také přítomna logika EAV, stejně jako v wp_usermeta
, wp_postmeta
a wp_commentmeta
. Atribut option_name
hraje roli klíče, zatímco atribut option_value
je jeho odpovídající hodnota. Další dva atributy v tabulce jsou atributem primárního klíče option_id
a autoload
, který řídí, zda se volba automaticky načte z databáze.
Vyhodnocení databázového modelu WordPress
Databázový model za WordPressem nedodržuje několik dobrých pravidel a konvencí návrhu databáze. Když navrhujeme databázi pro konkrétní účel a předem známe všechny její požadované funkce, můžeme se řídit všemi těmito pravidly. WordPress však potřebuje pokrýt vše, co by mohl mít kdokoli na mysli, takže obětování cizích klíčů a používání EAV je něco, co je třeba udělat. Atribut ID bych pojmenoval stejně ve všech tabulkách a udělal bych to samé s „cizími klíči“. Například bych nepoužil post_author
v wp_posts
tabulka, ale zůstal bych u users_id
. Kromě toho musím souhlasit s tím, že databáze WordPress je pro svůj účel opravdu skvělým modelem.
Co myslíš? Dejte nám vědět v sekci komentářů.