Wordpress - Datenbank

Aus Wikizone
Wechseln zu: Navigation, Suche

https://themecoder.de/2018/01/25/aufbau-und-tabellenstruktur-der-wordpress-datenbank/

https://codex.wordpress.org/Database_Description

Aufbau der DB[Bearbeiten]

Wichtige Tabellen[Bearbeiten]

wp_posts

Die Tabelle wp_posts ist das Zentrum der WordPress Datenbank.

Hier werden alle Beiträge und statische Seiten gespeichert. Die Tabelle beinhaltet deshalb die meisten Felder, unter anderem für den Titel, Autor, Erstellungsdatum und Content des Posts. Sehr wichtig ist auch das Feld post_type zur Unterscheidung der Content Arten.

Die Tabelle wird auch für weniger ersichtlichen Content genutzt. So werden Informationen über jede hochgeladene Datei in der Mediathek als Attachment in wp_posts abgelegt. WordPress Menüs nutzen die Tabelle ebenfalls zur Speicherung der Navigationslinks.

Darüber hinaus lassen sich in der Tabelle auch die zwischengespeicherten Revisionen eines Posts sowie die Customizer Changesets finden. Changesets sind das neue Feature in WordPress 4.9, mit dem sich Customizer Optionen planen und später veröffentlichen lassen.

Neben den Standard Post Types wird auch jeder Custom Post Type in wp_posts deponiert.

wp_postmeta

Zusätzliche Informationen für einzelne Posts können in wp_postmeta gespeichert werden. Dort werden zum Beispiel die benutzerdefinierten Felder gespeichert, d.h. so ziemlich jedes Plugin mit eigenen Metaboxen nutzt diese Tabelle im Hintergrund.

WordPress hat mehrere Tabellen für Metadaten, welche ich im Folgenden noch vorstellen werde. Diese sind alle nach dem gleichen Prinzip aufgebaut – eine einzigartige Meta ID, zwei Felder für Meta Key & Value und eine Verknüpfung mit der Tabelle, die ergänzt wird (In diesem Fall wp_posts).

Die Zuweisung eines Page Templates wird beispielsweise als Postmeta gespeichert:

meta_id post_id meta_key meta_value 13 7 _wp_page_template template-fullwidth.php Mit dieser Struktur können somit beliebig viele Metadaten für Posts angelegt werden.

wp_terms und wp_termmeta

In wp_terms werden die Basisinformationen für alle Kategorien und Schlagwörter abgelegt. Auch durch Plugins hinzugefügte Custom Taxonomies finden hier ihren Platz.

Fügt ihr z.B. ein neue Kategorie hinzu, wird dafür ID, Name und URL gesichert:

term_id name slug 27 WordPress Tutorials wordpress-tutorials wp_termmeta funktioniert genau gleich wie wp_postmeta und erlaubt die Speicherung von zusätzlichen Metadaten für die Terms.

wp_term_taxonomy

wp_term_taxonomy speichert weitere Informationen über den Term und dessen Taxonomie (Kategorie, Schlagwort oder Custom). Die Tabelle legt damit erst fest, ob es sich bei einem Term um eine Kategorie oder Schlagwort handelt.

Das Feld term_id verweist dabei auf die Tabelle wp_terms. Zusätzlich wird mit description die Beschreibung des Terms, mit parent die Hierarchie von Terms und mit count die Anzahl der verknüpften Posts festgehalten.

term_taxonomy_id term_id taxonomy description parent count 34 27 category Beschreibung der Kategorie 0 2 35 48 post_tag Beschreibung des Schlagworts 0 4 wp_term_relationships

Diese Tabelle dient zur Verknüpfung von Posts (Beitrag, Seite) mit den Taxonomien (Kategorie, Schlagwörter). object_id ist die ID des Posts, während term_taxonomy_id auf den Eintrag in wp_term_taxonomy verweist.

object_id term_taxonomy_id term_order 8 34 0 wp_comments und wp_commentmeta

Hier werden alle Kommentare aufbewahrt, daher recht selbsterklärend. Falls ein eingeloggter Nutzer kommentiert, wird der Kommentar mit der User ID verknüpft. Die Tabelle wp_commentmeta ist nach dem gleichen Schema wie wp_postmeta aufgebaut.

wp_users und wp_usermeta

Wie der Name schon verrät, beinhaltet diese Tabelle alle Nutzer der WordPress Installation. Daher werden Username, E-Mail und Passwort hier gespeichert.

wp_usermeta funktioniert auch hier analog wie die anderen Tabellen für Metadaten. Viele Daten wie Vor- und Nachname, aber auch Berechtigungen des Nutzers, sind hier ausgelagert.

wp_options

In wp_options werden alle Einstellungen festgehalten, die im WordPress Backend konfiguriert werden können, inklusive der Optionen im Customizer und des Transients Caches. Auch Themes und Plugins nutzen die Tabelle, wenn sie Einstellungen mit der Settings API oder Theme_Mods API hinzufügen.

Nice to know: Im Gegensatz zu WordPress Menüs und anderem Content werden Widgets ebenfalls in wp_options gespeichert.

wp_links

Die Tabelle wp_links stammt aus der Zeit, als WordPress noch eine reine Blog Software war. Dort werden die Links der damals sehr beliebten Blogroll gespeichert. Das Links-Feature wurde inzwischen komplett aus dem WordPress Core entfernt, kann aber mit dem Plugin Link Manager wieder hinzugefügt werden.


Sonstiges[Bearbeiten]

  • Nicht standardisiert welche Enginge

Tabelle einer Datenbank in MyISAM umwandeln:

alter table wp_posts ENGINE=myisam;

Tabelle einer Datenbank in InnoDB umwandeln:

alter table wp_posts ENGINE=innodb