Pliki, wp-config i baza danych
Moduł 1: Jak działa WordPress · Czas czytania: 9 minut
Cel lekcji: Po tej lekcji rozpoznają Państwo foldery WordPressa, ustawienia w wp-config.php oraz najważniejsze tabele bazy danych i będą wiedzieć, co gdzie znaleźć.
Kluczowe pojęcia: wp-admin, wp-includes, wp-content (themes, plugins, uploads, mu-plugins), wp-config.php (DB_*, table_prefix, klucze i sole, WP_DEBUG), .htaccess, wp_options (siteurl, home), wp_posts, wp_users
Dwie połówki: pliki i baza danych
Strona WordPress zawsze składa się z dwóch powiązanych ze sobą części:
- Pliki w katalogu WWW Państwa domeny (w DirectAdmin
domains/example.com/public_html): kod WordPressa, Państwa motywy, wtyczki i wszystko, co Państwo przesyłają. - Baza danych: wszystkie Państwa teksty, strony, menu, ustawienia, użytkownicy i komentarze.
To rozróżnienie jest ważne przy kopiach zapasowych i migracjach. Kopia zapasowa zawierająca tylko pliki nie zawiera Państwa tekstów. Kopia zapasowa zawierająca tylko bazę danych nie zawiera Państwa zdjęć. Potrzebują Państwo obu (lekcja 8.1).
Foldery
Po otwarciu katalogu WWW w Menedżerze Plików lub za pomocą programu FTP zobaczą Państwo mniej więcej to:
public_html/
├── wp-admin/ panel administracyjny (core)
├── wp-includes/ reszta WordPressa (core)
├── wp-content/ wszystko, co należy do Państwa
│ ├── themes/ motywy
│ ├── plugins/ wtyczki
│ ├── uploads/ Państwa media, według roku i miesiąca: uploads/2026/11/
│ ├── mu-plugins/ wtyczki "must use" (jeśli istnieją)
│ ├── languages/ tłumaczenia
│ └── upgrade/ folder tymczasowy na potrzeby aktualizacji
├── .htaccess reguły dla serwera WWW
├── index.php punkt startowy każdego żądania strony
├── wp-config.php ustawienia tej instalacji
├── wp-login.php strona logowania
├── xmlrpc.php stare połączenie dla aplikacji (lekcja 7.3)
└── ... inne pliki wp-*.php z rdzenia (core)Zasada ogólna: wp-admin, wp-includes oraz pojedyncze pliki wp-*.php należą do WordPressa. Są one nadpisywane przy każdej aktualizacji. Nigdy niczego tam samodzielnie nie umieszczają Państwo ani niczego nie zmieniają.
wp-content należy do Państwa. Aktualizacja WordPressa nie dotyka tego folderu (z wyjątkiem domyślnych motywów i wtyczek, które są z nią dostarczane). Tu trafiają Państwa motywy, wtyczki i przesłane pliki. Kilka rzeczy, o których warto wiedzieć:
- uploads rośnie najszybciej. Każde przesłane zdjęcie WordPress zapisuje w kilku formatach (lekcja 4.4). Strona z wieloletnim archiwum wiadomości może mieć gigabajty przesłanych plików.
- mu-plugins (must use) to wtyczki, które są zawsze aktywne i których nie można wyłączyć w panelu administracyjnym. Korzystają z nich niektórzy dostawcy hostingu i niektóre wtyczki. Włamywacze też chętnie coś tam ukrywają (lekcja 7.5). Jeśli nie znają Państwo jakiegoś pliku, proszę sprawdzić, skąd pochodzi.
- Usunięta wtyczka znika z folderu
plugins. Wyłączona wtyczka pozostaje, wraz z całym swoim kodem (lekcja 5.4).
wp-config.php: ustawienia
wp-config.php to pierwszy plik, który ładuje WordPress. Zawiera dane, dzięki którym WordPress łączy się z bazą danych, oraz kilka ustawień dla całej instalacji. Skrócona wersja:
define( 'DB_NAME', 'gebruiker_wp1' );
define( 'DB_USER', 'gebruiker_wp1' );
define( 'DB_PASSWORD', 'een-lang-willekeurig-wachtwoord' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'AUTH_KEY', 'lange willekeurige tekst' );
define( 'SECURE_AUTH_KEY', 'lange willekeurige tekst' );
define( 'LOGGED_IN_KEY', 'lange willekeurige tekst' );
define( 'NONCE_KEY', 'lange willekeurige tekst' );
define( 'AUTH_SALT', 'lange willekeurige tekst' );
define( 'SECURE_AUTH_SALT', 'lange willekeurige tekst' );
define( 'LOGGED_IN_SALT', 'lange willekeurige tekst' );
define( 'NONCE_SALT', 'lange willekeurige tekst' );
$table_prefix = 'wp_';
define( 'WP_DEBUG', false );
/* Dat is alles, stop met bewerken! */
require_once ABSPATH . 'wp-settings.php';Co to oznacza:
- DB_NAME, DB_USER, DB_PASSWORD, DB_HOST: z jaką bazą danych, użytkownikiem i hasłem łączy się WordPress oraz na jakim serwerze. Jeśli któraś z tych wartości jest nieprawidłowa, zobaczą Państwo komunikat "Error establishing a database connection". Zdarza się to często po migracji lub po zmianie hasła do bazy danych.
- Klucze i sole (osiem wierszy z KEY i SALT): losowe ciągi znaków, którymi WordPress podpisuje pliki cookie logowania. Kto je zna, teoretycznie może stworzyć ważny plik cookie logowania. Jeśli je Państwo zmienią, wszyscy zostaną wylogowani. Dokładnie to należy zrobić po włamaniu (lekcja 7.5). Nowe wartości można pobrać z adresu
https://api.wordpress.org/secret-key/1.1/salt/. - $table_prefix: przedrostek wszystkich nazw tabel, zazwyczaj
wp_. Dzięki temu kilka instalacji może korzystać z jednej bazy danych. Wybór innego przedrostka nie jest prawdziwym zabezpieczeniem, ale też nie szkodzi. - WP_DEBUG: włącza komunikaty o błędach. Na działającej stronie jest to wyłączone (
false). Jak bezpiecznie przeglądać błędy bez pokazywania ich odwiedzającym, przeczytają Państwo w lekcji 5.4. - Ustawienia, które Państwo sami dodają (na przykład
DISALLOW_FILE_EDITz lekcji 7.4 lubDISABLE_WP_CRONz lekcji 6.3) należy umieścić powyżej wiersza "stop met bewerken" (koniec edycji).
Plik wp-config.php zawiera hasło do Państwa bazy danych. Nigdy nie udostępniają Państwo tego pliku, nie umieszczają jego kopii w katalogu WWW (jak wp-config.php.bak czy wp-config.old: taki plik może pobrać każdy, ponieważ serwer WWW nie wykonuje go jako PHP) i nadają mu ścisłe uprawnienia dostępu (lekcja 7.4).
.htaccess
Przy LiteSpeed i Apache w katalogu WWW znajduje się plik .htaccess z regułami dla serwera WWW. Jego nazwa zaczyna się od kropki, dlatego w wielu programach jest ukryty. WordPress umieszcza w nim ten blok, aby uzyskać czytelne adresy (linki bezpośrednie):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressMówiąc prościej: "jeśli to nie jest istniejący plik (!-f) ani istniejący folder (!-d), przekaż żądanie do index.php." To krok 2 z lekcji 1.2. Wtyczki (do cache, bezpieczeństwa) często dodają własne bloki. Własne reguły proszę umieszczać poza blokami WordPressa i wtyczek, ponieważ te bloki są czasami nadpisywane na nowo. Przy nginx plik .htaccess nie istnieje; tam odpowiednie reguły ustawia dostawca hostingu w konfiguracji serwera.
Baza danych: która tabela do czego
Za pomocą phpMyAdmin (w DirectAdmin w sekcji Zarządzanie bazami danych) można zajrzeć do bazy danych. Zwykła instalacja ma dwanaście tabel; wtyczki często dodają ich więcej. Najważniejsze z nich:
| Tabela | Co się w niej znajduje |
|---|---|
wp_posts | Wpisy, strony, wersje robocze, elementy menu, a przy motywach blokowych także szablony i wzorce. Również obrazy są tu traktowane jako „wpis” typu załącznik (attachment) |
wp_postmeta | Dodatkowe dane powiązane z wpisami, na przykład cena produktu lub ustawienia kreatora stron |
wp_options | Ustawienia witryny i wtyczek. Znajdują się tu siteurl i home (lekcja 3.1), nazwa aktywnego motywu oraz lista aktywnych wtyczek |
wp_users i wp_usermeta | Użytkownicy, ich (zaszyfrowane) hasła oraz ich rola |
wp_terms, wp_term_taxonomy, wp_term_relationships | Kategorie, tagi i powiązania z wpisami, do których należą |
wp_comments i wp_commentmeta | Komentarze |
Dwie przydatne informacje. Po pierwsze: w wp_options znajdują się siteurl i home. Jeśli są one nieprawidłowe (na przykład po migracji), strona przekierowuje wszystkich na niewłaściwy adres i nie mogą Państwo wejść do panelu administracyjnego. Wtedy można je przywrócić w phpMyAdmin lub za pomocą reguł w wp-config.php (lekcja 3.1). Po drugie: wiele ustawień jest zapisywanych w formie zserializowanej, czyli w formacie PHP, w którym liczona jest długość każdego tekstu. Jeśli taką wartość zmienią Państwo ręcznie albo zastosują proste „znajdź i zamień” bezpośrednio na bazie danych, ta długość przestaje się zgadzać i ustawienie ulega uszkodzeniu (lekcja 3.2).
Przeglądanie danych w phpMyAdmin jest bezpieczne. Wprowadzanie zmian należy robić tylko wtedy, gdy wiedzą Państwo, co robią, i zawsze mając kopię zapasową.
W praktyce: jak to wygląda w panelu
Jako przykład używamy DirectAdmin. W cPanel i Plesk odpowiednie sekcje również nazywają się Menedżer Plików (File Manager) oraz phpMyAdmin.
- Proszę otworzyć Menedżer Plików i przejść do
domains/example.com/public_html. Proszę włączyć wyświetlanie ukrytych plików, aby zobaczyć.htaccess. - Proszę kliknąć na
wp-config.phpi wybrać podgląd (nie edycję). Proszę odnaleźćDB_NAMEi$table_prefix. - Proszę otworzyć phpMyAdmin, wybrać po lewej stronie bazę danych o tej nazwie i sprawdzić, jakie tabele się w niej znajdują.
- Proszę kliknąć na tabelę
wp_options(z Państwa przedrostkiem) i odnaleźć wierszesiteurlihome.
Podsumowanie
- Strona WordPress to pliki plus baza danych; kopia zapasowa potrzebuje obu elementów.
wp-admin,wp-includesi pojedyncze pliki rdzenia (core) należą do WordPressa;wp-contentnależy do Państwa.- wp-config.php zawiera dane bazy danych, klucze i sole, przedrostek tabel oraz ustawienia takie jak WP_DEBUG. Nigdy nie przechowują Państwo jego kopii w katalogu WWW.
.htaccessprzekazuje wszystko, co nie jest plikiem, do index.php; własne reguły umieszcza się poza blokami WordPressa.- W
wp_optionsznajdują się siteurl i home; zserializowanych danych nie zmienia się ręcznie.
Quiz
Zadanie
Zadanie D1.3: Proszę zbadać własną instalację. Proszę otworzyć katalog WWW w Menedżerze Plików lub za pomocą programu FTP, a następnie swoją bazę danych w phpMyAdmin. Proszę jedynie przeglądać, niczego nie zmieniając. Proszę zaznaczyć, co Państwo znaleźli, i uzupełnić: przedrostek tabel, liczbę tabel w bazie danych, wartości siteurl i home w wp_options oraz foldery w wp-content. Proszę też zapisać, czy w wp-content/mu-plugins znajdują się pliki i czy wiedzą Państwo, skąd pochodzą. Nigdy nie udostępniają Państwo hasła do bazy danych, również w tym formularzu.
Zadanie D1.3: Proszę zbadać własną instalację
To zadanie wykonuje się samodzielnie, nikt go nie sprawdza. Prosimy zaznaczyć wykonane punkty i oznaczyć zadanie jako wykonane.
Prefiks kończy się podkreśleniem (na przykład wp_ lub dowolnym kodem). Zwykła instalacja ma 12 tabel; wtyczki dodają kolejne. siteurl i home zaczynają się od https://. Nigdy nie należy udostępniać hasła do bazy danych z pliku wp-config.php, również tutaj nie.
Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.
Dalsza lektura
Poniższe artykuły opisują kroki w panelach WebOké; w innych panelach działają one w podobny sposób.
- Instrukcja DirectAdmin 11.1: Otwieranie Menedżera Plików: foldery w Państwa pakiecie
- Instrukcja DirectAdmin 11.4: Pokazywanie i edycja ukrytych plików, takich jak .htaccess
- Instrukcja DirectAdmin 12.3: Otwieranie i korzystanie z phpMyAdmin
- Jaka jest nazwa użytkownika / hasło / nazwa bazy danych MySQL?
- Instrukcja DirectAdmin 18.6: Error establishing a database connection
- wp-config.php (developer.wordpress.org, w języku angielskim): https://developer.wordpress.org/advanced-administration/wordpress/wp-config/
