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 debugowania
  • WP_DEBUG_LOG – zapisuje błędy do pliku wp-content/debug.log
  • WP_DEBUG_DISPLAY – kontroluje wyświetlanie błędów bezpośrednio na stronie (ważne – ustaw na false na 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 aktualizacji
  • true – 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);

E-mail

// 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:

  1. Ustawienia bazy danych
  2. Klucze bezpieczeństwa i sole
  3. Prefiks tabeli
  4. Ustawienia środowiska (development/production)
  5. Bezpieczeństwo
  6. Wydajność
  7. Debug (tylko dla środowiska deweloperskiego)
  8. 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ć

  1. Białe znaki przed <?php lub po ?> – mogą powodować problemy z nagłówkami HTTP
  2. Brak kopii zapasowej – zawsze twórz backup przed modyfikacją
  3. Testowanie na produkcji – niebezpieczne ustawienia debugowania powinny być używane tylko lokalnie
  4. Zbyt wysokie limity pamięci – mogą być ignorowane przez serwer lub powodować problemy
  5. 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.php odpowiednimi uprawnieniami (chmod 600 lub 640)
  • Nie umieszczaj wp-config.php w 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.

UDOSTĘPNIJ

Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej: