Struktura bazy danych WordPress

W poprzednim wpisie pokazałem jak krok po kroku zainstalować WordPressa. Podczas instalacji musieliśmy założyć bazę danych, gdzie WordPress będzie przechowywał wszystkie informacje o naszym blogu. Niemal każda funkcjonalność WP jest dostępna z poziomu panelu administracyjnego, jednak znając chociaż podstawy budowy jego bazy danych, możemy wykonywać zarówno więcej operacji, jak i wykonywać je masowo. W tym artykule prześledzę i opiszę każdą tabelę, z której korzysta WP.

Jak dostać się do bazy danych WordPressa?

Możemy spróbować wpisać w naszą przeglądarkę adres:
nasza-domena.pl/phpmyadmin ( w większości hostingów i serwerów działa) lub dostać się tam przez panel administracyjny naszego hostingu. W przypadku gdy nie zapisaliśmy sobie dostępów do bazy danych podczas instalacji WordPressa, możemy skorzystać na przykład z pliku konfiguracyjnego wp-config.php znajdującego się w katalogu naszego WP u nas na serwerze.
Jak to zrobić? Logujemy się na nasz serwer i po wejściu do katalogu domeny odszukujemy plik wp-config.php, klikamy prawym klawiszem myszy i wybieramy opcję Podgląd/edycja.
Wordpress - edycja pliku wp-config.php

W zależności od ustawień naszego programu do wymiany plików FTP plik do edycji włączy nam się w wybranym edytorze.
Jeśli tego nie konfigurowaliśmy włączy nam edycje pliku w podstawowym edytorze systemowym.
W pliku odszukujemy miejsca „MySQL Settings” jak na screenie poniżej:
Wordpress - konfiguracja pliku wp-config.php
Chyba powyższy screen wyjaśnia wszystko, tak więc logujemy się do bazy danych MySQL.
Widzimy strukturę tabel bazy WP.  W podstawowej wersji składa się ona z 12 tabel. Domyślnie mają one prefiks wp_ plus do tego nazwa tabeli. Prefiks możemy zmienić w pliku konfiguracyjnym wp-config.php. Przejrzyjmy tabele po kolei:

Struktura tabeli wp_commentmeta

Baza danych WordPressa - struktura tabeli wp_commentmeta
W tej tabeli znajdować się będą dodatkowe informacje dotyczące komentarzy. Generalnie w strukturze widzimy 4 tabele zakończone końcówką meta tj. wp-commentmeta, wp-postmeta, wp-termmeta i wp-usermeta. Właśnie w tych tabelach zawierają się rozszerzone informacje dotyczące tej kategorii na jaką wskazuje początek nazwy tabeli. W wp_commentsmeta póki co nie widzimy żadnych wierszy, mimo iż testowo dodałem komentarz do wpisu oraz odpowiedziałem na niego. Ta tabela jest pusta dlatego że na obecną chwilę WordPress nie przechowuje żadnych dodatkowych informacji dotyczących komentarzy. O jakie dane chodzi? Np. dodamy sobie wtyczkę od dodawania ocen do komentarzy, tak na przykład: czy komentarz był przydatny i łapka w górę i dół. Takie dane ( w zależności od wtyczki) znajdą się tutaj w tabeli.
Wyjaśnienie kilku przykładowych kolumn:
-meta_id – unikalny numer przypisany do każdego wiersza,
-comment_id – numer komentarza, którego dotyczy dany wiersz,
-meta_key – nazwa klucza identyfikującego dane,
-meta_value – wartość powyższego klucza, czyli dane.

Struktura tabeli wp_comments

Baza danych WordPressa - struktura tabeli wp_comments

Znajdują się tutaj komentarze. Wystarczy spojrzeć na nazwę kolumny i łatwo się domyślić co dana komórka zawiera. Znajdziemy tu informacje kto dodawał komentarze, z jakiego IP, jaki mail podał oraz m.in. czy komentarz dodany przez danego użytkownika został przez nas zatwierdzony.
Kilka przykładów:
-comment_post_ID – ID wpisu, do którego został dodany dany komentarz,
-comment_author_email – adres email autora komentarza (jeśli go nam podał podczas dodawania komentarza),
-comment_content – treść dodanego komentarza,
-comment_approved – zwraca 1 jeśli komentarz został zatwierdzony lub 0 jeśli oczekuje niezatwierdzony,
-comment_agent – zawiera informacje typu: jakiej przeglądarki użył komentujący, z jakiego systemu operacyjnego korzystał.

Struktura tabeli wp-links

Baza danych WordPressa - struktura tabeli wp_links

W tej tabeli raczej niczego nie zobaczymy. Od wersji 3.5 ( obecna wersja na dzień powstawania tego postu 4.9.8) administracja linkami została usunięta z panelu WordPressa. Tabela znajduję się w bazie danych raczej aby wspierać blogi, które nie były aktualizowane. Pomijam przykłady, ponieważ w większości przypadków będzie ona u nas pusta.

Struktura tabeli wp_options

Baza danych WordPressa - struktura tabeli wp_options

W tej tabeli jest już ciekawiej. Znajdziemy tutaj większość informacji o konfiguracji naszej witryny (jej nazwę, skrócony opis, email administratora), a także dane o wtyczkach, motywach, widgetach.
Kilka przykładów:
blogname – nazwa naszego bloga, która wyświetla się w górnym pasku przeglądarki i jest to meta title naszej strony,
admin_email – email administratora naszej witryny,
comments_notify – jeśli jest 1 – oznacza to, że zaznaczyliśmy w naszym panelu administracyjnym otrzymywanie powiadomień mailowych w przypadku gdy ktoś doda komentarz na naszym blogu

Struktura tabeli wp_postmeta

Baza danych WordPressa - struktura tabeli wp_postmeta
W tej tabeli znajdziemy przeróżne informacje dotyczące naszych postów. Póki co dodałem do naszej testowej witryny tylko jeden wpis więc mam mało tych informacji, niemniej jednak jest to tabela, która zwykle przechowuje najwięcej informacji. Na screenie widzimy m.in. ID postu oraz klucz, który informuje z jakiego szablonu korzysta dany wpis. Jeśli ktoś korzysta np. z wtyczki pozwalającej na dodawanie ocen do wpisów ( najpopularniejsza jest kk star ratings) znajdzie tutaj też informacje ile głosów ma dany post oraz jaka jest średnia ocena.

Struktura tabeli wp_posts

Baza danych WordPressa - struktura tabeli wp_posts
Ta tabela dotyczy stricte postów. Widzimy na screenie, że przechowuje m.in. informacje kto jest autorem postu, kiedy został dodany i zmodyfikowany. Zawiera informacje nie tylko o postach opublikowanych, ale także o szkicach, stronach oraz zapisuje rewizje i automatyczne zapisy. Jeśli domyślnie włączoną mamy opcję, aby WordPress zapisywał nam rewizję zawsze możemy wrócić do poprzedniej wersji naszego wpisy, natomiast automatyczne zapisy służą do tego, aby co jakiś odstęp czasu postęp naszego wpisu został zapamiętany. Gdy na przykład zawiesi nam się komputer i będziemy musieli go ponownie uruchomić, a akurat pisaliśmy wpis na naszego bloga, nie musimy się martwić tym, że straciliśmy wszystko co napisaliśmy, bo WordPress zapisuje co jakiś czas stan wpisu.
Przykłady:
post_date – data dodania postu,
comment_status – zapisuje informacje czy wyraziliśmy w naszym panelu administracyjnym zgodę na dodawanie komentarzy do danego wpisu,
post_status – wyświetla informacje czy nasz wpis/strona jest już opublikowana czy jest szkicem,
post_modified – zapisuję datę modyfikacji postu,
comment_count – zapisuje ilość komentarzy dodanych do danego wpisu.

Struktura tabeli wp_terms

Baza danych WordPressa - struktura tabeli wp_terms
Jeśli dokładnie czytaliście mój wpis to pewnie zauważyliście, że pominąłem tabele wp_termmeta.
W skrócie też powiem o tabelach wp_term_taxonomy i wp_term_relationships. Przede wszystkim trzeba wytłumaczyć co to takiego termsy. Myślę że jest to temat na oddzielny wpis, gdzie pokażę jak tworzyć własne termsy i jakie one mają zastosowanie ( a powiem teraz krótko że jest to bardzo przydatna rzecz i pozwala zadbać o porządek na blogu). W skrócie termsy ( warunki) w WP to elementy taksonomii służące do klasyfikowania obiektów. WP pozwala nam nie tylko dzielić posty na kategorie, ale także wprowadzać własne typy postów. Dodając wpis, przypisujemy go zwykle do jakiejś kategorii i już jest to przykład grupowania elementów, a możemy je grupować na wiele innych sposobów i właśnie tutaj z pomocą przychodzą własne taksonomie. Wszystkie tabele, które wymieniłem powyżej dotyczą właśnie tego działu WordPressa – wp_termmeta przechowuje dane o naszych warunkach, a wp_term_relationships informacje jakie relacje zachodzą pomiędzy tabelami z warunkami.

Struktura tabeli wp_usermeta

Baza danych WordPressa - struktura tabeli wp_usermeta

Tak jak wspominałem w poście o instalacji WordPressa  podczas jej przeprowadzania wymagane jest podanie danych użytkownika. Ten użytkownik, którego dane wpisujemy podczas instalacji jest domyślnie administratorem naszej witryny. Jak wiemy WP to blog przez co możemy dodawać wielu użytkowników, a co lepsze nadawać im różne role. Po co w WordPressie taka funkcja?
Myślę że jest ona bardzo przydatna. Weźmy pod uwagę że nie zawsze tylko my musimy dodawać wpisy do naszego bloga. Jeśli podamy komuś nasze dane administratora bądź założymy mu konto z takimi uprawnieniami może on np. zaglądać do naszych wtyczek czy ustawień. Z pomocą przychodzą role dla użytkowników. Jest to po prostu stopniowanie możliwości jakie może wykonać użytkownik naszego panelu administracyjnego. Np. redaktor po zalogowaniu się do naszego panelu administracyjnego WP będzie mógł dodać nowy wpis, ale nie będzie mógł usunąć innego czy też przejrzeć naszych wtyczek i ustawień naszego bloga. Tabela wp_usermeta przechowuje właśnie takie dane.
Przykłady, gdy meta kluczem jest:
first_name – Imię użytkownika, które podał podczas zakładania konta do panelu administracyjnego,
description – opis użytkownika czyli nic innego jak biografia danego autora,
wp_user_level – rola użytkownika, o której wspominałem powyżej.

Strukura tabeli wp_users
Baza danych WordPressa - struktura tabeli wp_users

Zawiera informacje o użytkownikach, które mają dostęp do naszego panelu administracyjnego. Przechowuje jego login, hasło ( które jest zakodowane – czyli w bazie danych nie podejrzymy hasła które ktoś ustawił sobie do naszego panelu), datę rejestracji czy wyświetlane imię.

Dlaczego warto znać strukturę bazy danych WordPressa?

Przede wszystkim operacje wykonywane przez bazę danych są szybsze. Osobiście więcej rzeczy robię przez bazę niż przez panel, poza tym baza danych pozwala zmienić, dodać czy usunąć więcej danych niż pozwala nam na to panel, np. dane które zapisują w niej nasze wtyczki.
Jeśli ktoś poznał już mySQL to dobrze wie jak wygodne jest szukanie informacji w bazie danych. Panel WP nam na to nie pozwoli.
Dobrą radą jest to, aby przed każdymi zmianami ręcznymi w bazie danych zrobić sobie najpierw jej backup, ponieważ gdyby coś poszło nam nie tak możemy w łatwy sposób przywrócić dane.

Struktura bazy danych Wordpress
guest
7 komentarzy
Inline Feedbacks
View all comments
Marcin
Marcin

Aż z ciekawości przejrzałem sobie bazę po przeczytaniu artykułu i powiem szczerze że nie taki diabeł straszny jak go malują 🙂 Trzeba jedynie siąść na spokojnie, przejrzeć i chwilę pomyśleć.. 🙂

Ciekawy
Ciekawy
W odpowiedzi do  Marcin

Będą jakieś wpisy dotyczące jak szukać informacji w bazie danych? Poprzez zapytania SQL ?

Admin
Admin
W odpowiedzi do  Ciekawy

Tak, będą 🙂

Admin
Admin
W odpowiedzi do  Ciekawy

Tak, jest to w planach aczkolwiek czasu ostatnio coraz mniej :/

Niestra
Niestra

Tak wygląda i powinna wyglądać baza WP. Po instalacji setek pluginów (tak jak to zwykle robią ludzie) już nie jest tak pięknie 🙂

Michaił
Michaił

Struktura ok, mnie najbardziej w niej wkurza fakt że np. w wp_posts nie ma przypisanych kategorii wpisów ( są w wp_postmeta) co w przypadku szukania przez bazę jest trochę upierdliwe…

Kosak
Kosak

Bazka prosta i czytelna, łatwo znaleźć każdą rzecz, ale do czasu…
Jak na przykład zaglądam czasem do bazy WP klientów i widzę co tam jest porobione przez pluginy np. wordfenca to dramat

Ta strona korzysta z ciasteczek. Więcej informacji

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close