W artykule prześledzimy i opiszemy każdą z podstawowych tabel wykorzystywanych przez WordPressa.
Dzięki znajomości struktury bazy danych WP możemy m.in. szybko znaleźć potrzebne nam informacje, zmienić je czy też wykonać masowo jakieś większe operacje, które z poziomu panelu WP byłyby ograniczone lub niemożliwe.
Jak dostać się do bazy danych WordPressa?
Możemy spróbować wpisać w naszą przeglądarkę następujący adres: nasza-domena.pl/phpmyadmin (w większości hostingów i serwerów zadział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.
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 (np. w notatniku).
W pliku odszukujemy miejsca „MySQL Settings” jak na screenie poniżej:
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
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 dodaliśmy komentarz do wpisu oraz odpowiedzieliśmy na niego. Ta tabela jest pusta, ponieważ 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
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
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. Pomijamy przykłady, ponieważ w większości przypadków będzie ona u nas pusta.
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 podstawowy meta title naszej strony,
- admin_email – email administratora naszej witryny,
- comments_notify – jeśli jest 1 to oznacza, że zaznaczyliśmy w naszym panelu administracyjnym otrzymywanie powiadomień mailowych w przypadku, gdy ktoś doda komentarz na naszym blogu.
Struktura tabeli wp_postmeta
W tej tabeli znajdziemy przeróżne informacje dotyczące naszych postów. Póki co dodaliśmy do naszej testowej witryny tylko jeden wpis więc mamy 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 ( np. kk Star Rating) znajdzie tutaj też informacje ile głosów ma dany post oraz jaka jest średnia ocena.
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 wpisu, 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 – zapisuje datę modyfikacji postu,
- comment_count – zapisuje ilość komentarzy dodanych do danego wpisu.
Struktura tabeli wp_terms
Jeśli dokładnie czytaliście ten wpis to pewnie zauważyliście, że pominęliśmy tabele wp_termmeta.
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 wymieniliśmy 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
Tak jak wspominaliśmy 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?
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
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 i wydajniejsze. Można także dostać się do informacji, które nie są dostępne z poziomu panelu WP (np. do danych z wtyczek).
Dobrą radą jest, aby przed każdymi ręcznymi zmianami w bazie danych zrobić najpierw jej backup, ponieważ gdyby coś poszło nie tak, możemy w łatwy sposób przywrócić dane.