Jednou z každodenních činností WordPresáka je debugování chyb v kódu. Tomu se prostě nevyhnete.
Pokud něco nefunguje, je potřeba přijít na to co to je. A na problematické místo se dá přijít tak, že se zapne zobrazování chyb, které na případný problém upozorní.
Takže, pokud v diskuzi dostanete radu – zapni debug, jde o zapnutí zobrazování chyb.
PHP má zabudované zobrazování chyb, které je buď zapnuté, nebo vypnuté. Tato konfigurace je nadřazená WordPressu, tudíž, jakékoliv nastavení je k ničemu, pokud má PHP na serveru, kde běží váš web zobrazování vypnuté.
Co je soubor wp-config.php a kde jej najdu?
Soubor wp-config.php se nachází v root složce WordPressu. To je složka, která obsahuje celou instalaci WP, včetně podsložek wp-admin, wp-content a wp-includes.
Obsahuje především definice konstant, které WordPress potřebuje k fungování a zároveň úpravou a přidáváním dalších definicí, můžete upravovat chování WordPressu.
Jak povolit zobrazování chyb?
Nejprve si musíte soubor pomocí ftp klienta stáhnout do počítače a otevřít v některém z editorů. Já používám Visual Studio, ale vhodné jsou i Sublime a PSPad.
V souboru pak najdete řádek, kde je kód:
define('WP_DEBUG', false);
A to je právě onen zmíněný debug. Je to definice konstanty WP_DEBUG, která může mít hodnotu false, nebo true. Zobrazení chyb poovlíte úpravou kódu na:
define('WP_DEBUG', true);
Tím se vám povolí zobrazování chyb. Ty se dělí na PHP chyby, varování a upozornění. Typické výpisy jsou fatal error (chyba která ukončí běh scriptu), nebo undefined (nedefinovaná proměná, což je jen upozornění).
Kromě těchto PHP hlášek se při zapnutém debugu vypisují informace o zavržených funkcích, což je poměrně problém, při zastaralých WooCommerce šablonách.
V případě, že se vám pro změně false na true, nezačnou zobrazovat chyby, tak máte vše v naprostém pořádku, nebo je třeba povolit zobrazování chyb v PHP. Před WP_DEBUG přidejte kód, případně kontaktujte váš hosting, zda máte povolené zobrazování v PHP:
@ini_set( 'display_errors', 1 );
Logování chyb
Kromě konstanty WP_DEBUG se musím zmínit ještě o dalších dvou – WP_DEBUG_LOG a WP_DEBUG_DISPLAY.
Tyto dvě konstanty ve správné kombinaci umožňují nezobrazovat chyby na webu, ale zapisovat je do souboru debug.log. Tento kód přidáte za WP_DEBUG a chyby se vám budou zobrazovat a zapisovat do souboru ve složce wp-config:
define( 'WP_DEBUG_LOG', true );
V případě, že ladíte chyby na produkčním webu, je vypisování chyb nežádoucí. Nejde o zrušení zobrazení chyb jako takového, ale pouze o jeho výpis na webu. Navenek se tak web tváří, že je všechno v pořádku a veškerá upozornění jsou ukládána do souboru. Občas se mi debug log osvědčil, pokud na webu byla chyba a po povolení WP_DEBUG se přesto zobrazovala jen bílá stránka. Do logu se chyba propsala.
Kompletní kód pro povolení debugu, ukládání do souboru, ale nezobrazování na webu:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Jak změnit umístění souboru debug.log?
Soubor debug.log má jednu nepříjemnou vlastnost. Pokud zapomenete vypnout logování chyb a soubor nesmažete, může si jej zobrazit kdokoliv. Což je často využíváno pro zjištění slabých míst webu.
WordPress však umožňuje změnit umístění souboru a přejmenovat jej:
define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );
Tím ztížíte zvědavcům práci, protože nebudou vědět, kde soubor je a jak se jmenuje.
Rozšíření debugování pomocí pluginu
V případě, že potřebujete debugovat web více, než jen pomocí zobrazování chyb, doporučuji nainstalovat plugin https://wordpress.org/plugins/query-monitor/