Kompletny przewodnik po komendach w pliku wp-config.php WordPress
- Poziom trudności:
Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:
Plik wp-config.php to centrum konfiguracyjne każdej instalacji WordPressa. To właśnie tutaj możesz precyzyjnie kontrolować zachowanie swojej witryny, od podstawowych ustawień bazy danych (bez tych ustawień zapewne zamiast swojej strony zobaczysz komunikat „Błąd łączenia się z bazą danych”) po zaawansowane opcje optymalizacji i bezpieczeństwa. W tym artykule znajdziesz kompleksowy przegląd wszystkich dostępnych komend i stałych.
Podstawowe ustawienia bazy danych
Zacznijmy od fundamentów – konfiguracji połączenia z bazą danych. Te komendy są generowane automatycznie podczas instalacji WordPressa:
define('DB_NAME', 'nazwa_bazy');
define('DB_USER', 'użytkownik');
define('DB_PASSWORD', 'hasło');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
Warto wiedzieć, że DB_HOST może przyjmować różne wartości w zależności od konfiguracji serwera – czasami będzie to localhost, innym razem 127.0.0.1, a w niektórych przypadkach konkretny adres IP lub nazwa hosta z portem (np. localhost:3306). Może też przyjąć wartość mysql8 (w Home.pl) w momencie, kiedy korzystasz z MySQL w wersji 8.0.
Prefiks tabel:
$table_prefix = 'wp_';
Zmiana domyślnego prefiksu wp_ na coś unikalnego (np. xyz_ lub secure_) to prosty sposób na zwiększenie bezpieczeństwa – utrudnia atakującym przewidywanie nazw tabel w bazie danych. Prefiks podaje się podczas instalacji WordPressa.
Tryb debugowania i narzędzia dla programistów
Podczas rozwoju strony niezbędne są narzędzia debugowania. WordPress oferuje rozbudowany system wykrywania i logowania błędów:
// Podstawowe debugowanie
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('SCRIPT_DEBUG', true);
WP_DEBUG– główny przełącznik trybu debugowaniaWP_DEBUG_LOG– zapisuje błędy do plikuwp-content/debug.logWP_DEBUG_DISPLAY– kontroluje wyświetlanie błędów bezpośrednio na stronie (ważne – ustaw nafalsena działającej stronie żeby zwiększyć bezpieczeństwo witryny)SCRIPT_DEBUG– wymusza używanie nieskompresowanych wersji plików CSS i JS, co ułatwia debugowanie
Zaawansowane debugowanie:
define('SAVEQUERIES', true);
define('DIEONDBERROR', true);
SAVEQUERIES zapisuje wszystkie zapytania SQL wraz z czasem wykonania w tablicy $wpdb->queries. To nieocenione narzędzie do optymalizacji, ale znacząco obciąża system – używaj tylko podczas rozwoju!
DIEONDBERROR powoduje, że WordPress natychmiast przestaje działać i wyświetla błąd, gdy tylko napotka problem z bazą danych. To nieocenione narzędzie do szybkiego wykrywania usterek w kodzie, ale jest niepożądane dla zwykłego użytkownika – używaj tylko podczas rozwoju!
Klucze bezpieczeństwa i salt
WordPress używa unikalnych kluczy i salt do szyfrowania informacji przechowywanych w cookies użytkowników:
define('AUTH_KEY', 'tutaj-losowy-ciąg-znaków');
define('SECURE_AUTH_KEY', 'tutaj-losowy-ciąg-znaków');
define('LOGGED_IN_KEY', 'tutaj-losowy-ciąg-znaków');
define('NONCE_KEY', 'tutaj-losowy-ciąg-znaków');
define('AUTH_SALT', 'tutaj-losowy-ciąg-znaków');
define('SECURE_AUTH_SALT', 'tutaj-losowy-ciąg-znaków');
define('LOGGED_IN_SALT', 'tutaj-losowy-ciąg-znaków');
define('NONCE_SALT', 'tutaj-losowy-ciąg-znaków');
Możesz wygenerować nowe klucze używając oficjalnego generatora WordPress: https://api.wordpress.org/secret-key/1.1/salt/
Bezpieczeństwo – zaawansowane ustawienia
WordPress oferuje szereg opcji zwiększających bezpieczeństwo instalacji:
// Wyłączenie edytora plików w panelu administracyjnym
define('DISALLOW_FILE_EDIT', true);
// Wyłączenie instalacji/aktualizacji wtyczek i motywów - nie rekomendowane, chyba że wykonujesz samodzielnie aktualizacje
define('DISALLOW_FILE_MODS', true);
// Wymuszenie SSL dla panelu administracyjnego
define('FORCE_SSL_ADMIN', true);
// Wymuszenie SSL dla całej witryny
define('FORCE_SSL_LOGIN', true);
DISALLOW_FILE_EDIT to jedna z najważniejszych opcji bezpieczeństwa – wyłącza edytor plików motywów i wtyczek w kokpicie, co uniemożliwia potencjalnym napastnikom modyfikację kodu nawet po przejęciu konta administratora.
Kontrola aktualizacji:
// Całkowite wyłączenie automatycznych aktualizacji
define('AUTOMATIC_UPDATER_DISABLED', true);
// Precyzyjna kontrola aktualizacji rdzenia
define('WP_AUTO_UPDATE_CORE', 'minor'); // 'minor', 'major', true, false
Opcje dla WP_AUTO_UPDATE_CORE:
false– brak automatycznych aktualizacjitrue– wszystkie aktualizacje automatyczne'minor'– tylko aktualizacje bezpieczeństwa i drobne poprawki (zalecane)'major'– również główne wersje
Optymalizacja wydajności
WordPress posiada wbudowane mechanizmy poprawiające wydajność:
// Włączenie systemu cache
define('WP_CACHE', true);
// Kontrola kompresji i konkatenacji
define('CONCATENATE_SCRIPTS', false);
define('COMPRESS_SCRIPTS', false);
define('COMPRESS_CSS', false);
define('ENFORCE_GZIP', true);
WP_CACHE włącza obsługę cache’owania i jest wymagane przez większość wtyczek cachujących. ENFORCE_GZIP wymusza kompresję GZIP dla odpowiedzi serwera, co znacząco redukuje rozmiar przesyłanych danych.
CONCATENATE_SCRIPTS decyduje, czy skrypty (pliki .js) powinny być łączone w jeden większy plik. Ustawienie na false oznacza, że skrypty są ładowane osobno, co może pomóc w debugowaniu.
COMPRESS_SCRIPTS określa, czy skrypty (pliki .js) mają być kompresowane (zmniejszane). Ustawienie na false wyłącza to, co również ułatwia debugowanie.
COMPRESS_CSS określa, czy pliki stylów (pliki .css) mają być kompresowane (zmniejszane). Ustawienie na false wyłącza tę kompresję, ułatwiając sprawdzanie stylów.
ENFORCE_GZIP wymusza kompresję GZIP dla odpowiedzi serwera, co znacząco redukuje rozmiar przesyłanych danych.
Zarządzanie pamięcią
Jeśli twoja strona wymaga więcej zasobów lub wyświetlają się błędy przekroczenia limitu pamięci:
// Limit pamięci dla frontendu
define('WP_MEMORY_LIMIT', '256M');
// Limit pamięci dla panelu administracyjnego
define('WP_MAX_MEMORY_LIMIT', '512M');
Pamiętaj, że te wartości muszą być zgodne z limitami ustawionymi w PHP (php.ini). Jeśli ustawisz zbyt wysoką wartość, może ona być zignorowana przez serwer.
Zarządzanie rewizjami postów
WordPress domyślnie zapisuje każdą wersję edytowanego posta. Może to prowadzić do rozrostu bazy danych:
// Ograniczenie liczby rewizji - kopii stron/wpisów w historii
define('WP_POST_REVISIONS', 3);
// Całkowite wyłączenie rewizji
define('WP_POST_REVISIONS', false);
// Interwał automatycznego zapisu (w sekundach)
define('AUTOSAVE_INTERVAL', 160);
Zarządzanie koszem
// Czas przechowywania elementów w koszu (w dniach)
define('EMPTY_TRASH_DAYS', 7);
// Natychmiastowe usuwanie bez kosza
define('EMPTY_TRASH_DAYS', 0);
// Włączenie kosza dla mediów
define('MEDIA_TRASH', true);
Domyślnie WordPress przechowuje usunięte elementy przez 30 dni. Zmniejszenie tego czasu pomaga utrzymać bazę danych w czystości.
Niestandardowe ścieżki i URL-e
Możesz dostosować lokalizacje katalogów i URL-e WordPress:
// Własne URL-e instalacji
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
// Niestandardowa lokalizacja katalogu wp-content
define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');
define('WP_CONTENT_URL', 'https://example.com/content');
// Niestandardowa lokalizacja wtyczek
define('WP_PLUGIN_DIR', dirname(__FILE__) . '/content/plugins');
define('WP_PLUGIN_URL', 'https://example.com/content/plugins');
// Niestandardowa lokalizacja plików tłumaczeń
define('WP_LANG_DIR', dirname(__FILE__) . '/content/languages');
// Niestandardowy katalog dla uploadów
define('UPLOADS', 'wp-content/uploads');
Te ustawienia są szczególnie przydatne podczas migracji, w niestandardowych konfiguracjach serwerów, lub gdy chcesz ukryć typową strukturę WordPressa.
Zarządzanie Cron (zaplanowane zadania)
WordPress używa wirtualnego systemu cron, który uruchamia się podczas odwiedzin strony:
// Wyłączenie wbudowanego WP-Cron
define('DISABLE_WP_CRON', true);
// Alternatywny sposób uruchamiania cron
define('ALTERNATE_WP_CRON', true);
// Timeout dla blokady cron (w sekundach)
define('WP_CRON_LOCK_TIMEOUT', 60);
Po wyłączeniu WP_CRON powinieneś skonfigurować prawdziwy cron na serwerze.
Ustawienia sesji i cookies
Precyzyjna kontrola nad cookies użytkowników:
define('COOKIE_DOMAIN', '.example.com');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', '/wp-admin');
define('PLUGINS_COOKIE_PATH', '/wp-content/plugins');
define('COOKIEHASH', md5('example.com'));
Te ustawienia są kluczowe w instalacjach wielodomenowych lub gdy WordPress znajduje się w podkatalogu.
Multisite (sieć witryn)
Jeśli prowadzisz sieć stron WordPress:
// Włączenie możliwości tworzenia sieci
define('WP_ALLOW_MULTISITE', true);
// Aktywacja sieci (dodawane po konfiguracji)
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // false = podkatalogi, true = subdomeny
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
// Wyłączenie aktualizacji globalnych tabel
define('DO_NOT_UPGRADE_GLOBAL_TABLES', true);
Konfiguracja FTP/SSH dla aktualizacji
Określ sposób łączenia się z serwerem podczas instalacji wtyczek i motywów:
// Metoda połączenia: 'direct', 'ssh2', 'ftpext', 'ftpsockets'
define('FS_METHOD', 'direct');
// Ustawienia FTP
define('FTP_HOST', 'ftp.example.com:21');
define('FTP_USER', 'username');
define('FTP_PASS', 'password');
define('FTP_SSL', true);
// Ustawienia SSH
define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
define('FTP_PRIKEY', '/home/username/.ssh/id_rsa');
// Timeouty dla operacji na plikach
define('FS_TIMEOUT', 30);
define('FS_CONNECT_TIMEOUT', 30);
define('FS_CHMOD_DIR', (0755 & ~ umask()));
define('FS_CHMOD_FILE', (0644 & ~ umask()));
Metoda direct jest najszybsza, ale wymaga odpowiednich uprawnień na serwerze.
Proxy i Firewall
Jeśli twoja strona działa za proxy lub firewallem:
define('WP_PROXY_HOST', '192.168.1.100');
define('WP_PROXY_PORT', '8080');
define('WP_PROXY_USERNAME', 'username');
define('WP_PROXY_PASSWORD', 'password');
define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com');
Kontrola HTTP API
Zarządzaj zewnętrznymi połączeniami HTTP WordPress:
// Blokowanie wszystkich zewnętrznych żądań HTTP
define('WP_HTTP_BLOCK_EXTERNAL', true);
// Lista dozwolonych hostów (whitelist)
define('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com,example.com');
// Timeout dla żądań HTTP (w sekundach)
define('WP_HTTP_TIMEOUT', 10);
To znacząco zwiększa bezpieczeństwo, blokując potencjalnie złośliwe połączenia z wtyczek lub motywów.
Naprawa i konserwacja bazy danych
// Włączenie trybu naprawy bazy danych
define('WP_ALLOW_REPAIR', true);
Po włączeniu odwiedź: https://twojastrona.pl/wp-admin/maint/repair.php
WAŻNE: Wyłącz tę opcję zaraz po zakończeniu naprawy! Strona naprawy jest dostępna publicznie bez logowania.
Ustawienia językowe
// Język instalacji
define('WPLANG', 'pl_PL');
// Automatyczne aktualizacje tłumaczeń
define('WP_AUTO_UPDATE_CORE', true);
Wyłączanie funkcji i powiadomień
// Wyłączenie irytujących powiadomień o aktualizacjach
define('DISABLE_NAG_NOTICES', true);
// Domyślny motyw (gdy aktywny jest niedostępny)
define('WP_DEFAULT_THEME', 'twentytwentyfour');
// Wyłączenie obsługi błędów krytycznych (recovery mode)
define('WP_DISABLE_FATAL_ERROR_HANDLER', true);
// Wyłączenie heartbeat API (zmniejsza obciążenie serwera)
define('WP_HEARTBEAT_DISABLE', true);
Przesyłanie plików
// Dozwolenie przesyłania niebezpiecznych typów plików
define('ALLOW_UNFILTERED_UPLOADS', true);
UWAGA: To poważne zagrożenie bezpieczeństwa! Używaj tylko gdy absolutnie konieczne i rozumiesz ryzyko.
Edytor obrazów
// Nadpisywanie obrazów podczas edycji zamiast tworzenia nowych
define('IMAGE_EDIT_OVERWRITE', true);
// Minimalny interwał między wysyłaniem maili (w sekundach)
define('WP_MAIL_INTERVAL', 300);
// Adres "From" dla maili WordPress
define('WP_MAIL_FROM', 'wordpress@example.com');
define('WP_MAIL_FROM_NAME', 'WordPress');
Zaawansowane ustawienia dla doświadczonych użytkowników
// Niestandardowy user i grupa dla plików
define('FS_USER', 'www-data');
define('FS_GROUP', 'www-data');
// Wyłączenie sprawdzania wersji PHP
define('WP_PHP_VERSION_CHECK_SKIP', true);
// Zmiana częstotliwości sprawdzania aktualizacji (w sekundach)
define('WP_CHECK_UPDATE_INTERVAL', 43200); // 12 godzin
// Własny plik błędów
define('ERRORLOGFILE', '/var/log/wordpress/error.log');
Wpisy i media
// Maksymalny rozmiar posta (w bajtach)
define('WP_POST_MAX_REVISIONS', 5);
// Filtr przesyłanych mediów
define('MEDIA_FILTER_LIBRARY', true);
Środowiska (Environment)
WordPress rozpoznaje różne środowiska pracy:
define('WP_ENVIRONMENT_TYPE', 'development'); // 'local', 'development', 'staging', 'production'
Inne wtyczki i systemy mogą automatycznie dostosowywać swoje zachowanie na podstawie tej wartości.
Bezpieczeństwo – dodatkowe opcje
// Maksymalna liczba prób logowania
define('WP_MAX_LOGIN_ATTEMPTS', 3);
// Czas blokady po nieudanych próbach (w sekundach)
define('WP_LOGIN_LOCKOUT_TIME', 900); // 15 minut
// Wyłączenie XML-RPC (często cel ataków)
add_filter('xmlrpc_enabled', '__return_false');
Compatibility i Legacy
// Włączenie trybu kompatybilności dla starszych wtyczek
define('WP_COMPATIBILITY_MODE', true);
// Ustawienia dla MySQL
define('MYSQL_CLIENT_FLAGS', 0);
Praktyczne wskazówki dotyczące użytkowania
Kolejność wpisów w wp-config.php
Zalecana kolejność sekcji w pliku:
- Ustawienia bazy danych
- Klucze bezpieczeństwa i sole
- Prefiks tabeli
- Ustawienia środowiska (development/production)
- Bezpieczeństwo
- Wydajność
- Debug (tylko dla środowiska deweloperskiego)
- Pozostałe ustawienia specyficzne dla projektu
Różne konfiguracje dla różnych środowisk
Możesz użyć warunków do różnych ustawień na lokalnym serwerze i produkcji:
if ($_SERVER['HTTP_HOST'] == 'localhost') {
// Ustawienia dla lokalnego środowiska
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);
} else {
// Ustawienia dla produkcji
define('WP_DEBUG', false);
define('DISALLOW_FILE_EDIT', true);
define('FORCE_SSL_ADMIN', true);
}
Bezpieczeństwo pliku wp-config.php
Plik wp-config.php zawiera wrażliwe dane i powinien być chroniony:
.htaccess (Apache):
<files wp-config.php>
order allow,deny
deny from all
</files>
nginx.conf (Nginx):
location ~* wp-config.php {
deny all;
}
Możesz również przenieść wp-config.php o jeden poziom wyżej niż katalog główny WordPress – system automatycznie go znajdzie.
Pod żadnym pozorem nie udostępniaj swojego pliku wp-config.php w sieci, nie kopiuj zawartości i nie wklejaj w prywatnych rozmowach jeśli nie wiesz, co kopiujesz.
Najczęstsze błędy i jak ich unikać
- Białe znaki przed
<?phplub po?>– mogą powodować problemy z nagłówkami HTTP - Brak kopii zapasowej – zawsze twórz backup przed modyfikacją
- Testowanie na produkcji – niebezpieczne ustawienia debugowania powinny być używane tylko lokalnie
- Zbyt wysokie limity pamięci – mogą być ignorowane przez serwer lub powodować problemy
- Pozostawienie WP_ALLOW_REPAIR – otwiera publiczny dostęp do naprawy bazy
Podsumowanie
Plik wp-config.php to potężne narzędzie konfiguracyjne oferujące niemal pełną kontrolę nad instalacją WordPressa. Właściwa konfiguracja może znacząco:
- Poprawić bezpieczeństwo witryny
- Zwiększyć wydajność i szybkość działania
- Ułatwić debugowanie i rozwój
- Dostosować WordPress do specyficznych wymagań
Kluczowe zasady:
- Zawsze twórz kopię zapasową przed wprowadzeniem zmian
- Testuj nowe ustawienia najpierw w środowisku deweloperskim
- Dokumentuj wprowadzone zmiany komentarzami w pliku
- Zabezpieczaj plik
wp-config.phpodpowiednimi uprawnieniami (chmod 600 lub 640) - Nie umieszczaj
wp-config.phpw repozytorium Git – użyj.gitignore
Wiele z tych stałych jest przeznaczonych dla zaawansowanych użytkowników i programistów. Jeśli nie jesteś pewien działania konkretnej opcji, najlepiej pozostaw ją w domyślnym stanie lub sprawdź dokumentację WordPressa na https://developer.wordpress.org/ lub skontaktuj się z administratorem serwera.
Pamiętaj również, że hosting może mieć własne ograniczenia – niektóre ustawienia mogą wymagać współpracy z dostawcą hostingu lub odpowiednich uprawnień na serwerze.
Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:

Każdy, kto zapisze się na newsletter otrzyma ebooka pt. 

Komentarze — Napisz pierwszy komentarz
Czy powyższe wskazówki były skuteczne? Jeśli tak, podziel się swoimi spostrzeżeniami w komentarzu. Gdybyś chciał się podzielić ze mną skrawkiem kodu aby uzupełnić minikurs to skorzystaj z portalu pastebin.com i wyślij linka do kodu. Instrukcje jak to zrobić znajdziesz tutaj.