WordPress Debug Mode - znajdowanie błędów
Biały ekran, dziwne zachowanie, błędy wtyczek - debugowanie to niezbędna umiejętność. WordPress ma wbudowany tryb debug, który pokazuje błędy PHP i ostrzeżenia. Plus narzędzia jak Query Monitor.
Krótka odpowiedź
Włączanie WP_DEBUG
Podstawowe włączenie:
W wp-config.php (przed "That's all"):
```php
define('WP_DEBUG', true);
```
Pełna konfiguracja:
```php
// Włącz debug
define('WP_DEBUG', true);
// Zapisuj do pliku
define('WP_DEBUG_LOG', true);
// Nie pokazuj na stronie
define('WP_DEBUG_DISPLAY', false);
// Pokaż wszystkie błędy PHP
@ini_set('display_errors', 0);
```
Lokalizacja logów:
- wp-content/debug.log
Po debugowaniu (produkcja):
```php
define('WP_DEBUG', false);
```
Typy błędów PHP
Fatal Error:
- Strona nie działa
- Krytyczny błąd
- Przykład: Call to undefined function
Warning:
- Strona działa, ale coś nie tak
- Przykład: Missing argument, Division by zero
Notice:
- Drobne problemy
- Przykład: Undefined variable, Undefined index
Deprecated:
- Przestarzałe funkcje
- Działa, ale wymaga aktualizacji kodu
Interpretacja:
- Fatal: napraw natychmiast
- Warning: napraw gdy możesz
- Notice: nice to fix
- Deprecated: do aktualizacji przy okazji
Query Monitor (wtyczka)
Instalacja:
- Wtyczki → Query Monitor
- Aktywuj
Funkcje:
- Zapytania do bazy danych (slow queries!)
- Błędy PHP
- Hooks wykonane
- HTTP API calls
- Użycie pamięci
- Szablony użyte
- Skrypty/style załadowane
Jak używać:
- Admin bar → Query Monitor
- Rozwiń sekcje
- Czerwone = problemy
Slow queries:
- Queries → Sort by time
- Zapytania > 0.1s wymagają optymalizacji
Hooks:
- Które hooki się wykonały
- Przydatne przy debugowaniu actions/filters
Debugowanie konkretnych problemów
Biały ekran (WSOD):
1. Włącz WP_DEBUG
2. Sprawdź debug.log
3. Często: fatal error w wtyczce/motywie
4. Wyłącz wtyczki przez FTP (zmień nazwę folderu)
Błędy JavaScript:
- Konsola przeglądarki (F12 → Console)
- Często: konflikt wtyczek
- define('SCRIPT_DEBUG', true) - ładuje nieminifikowane
Błędy bazy danych:
```php
define('SAVEQUERIES', true);
// Potem w szablonie:
global $wpdb;
print_r($wpdb->queries);
```
Mail nie wysyła:
- Wtyczka WP Mail Logging
- Sprawdź SMTP ustawienia
- Błędy w debug.log