WordPress
Debugowanie
Szukaj…
Wprowadzenie
https://codex.wordpress.org/Debugging_in_WordPress
Debugowanie kodu PHP jest częścią każdego projektu, ale WordPress jest wyposażony w specjalne systemy debugowania zaprojektowane w celu uproszczenia procesu, a także standaryzacji kodu w rdzeniu, wtyczkach i motywach.
Uwagi
Wtyczki do debugowania w WordPress:
WP_DEBUG
WP_DEBUG
to stała PHP (stała zmienna globalna), której można użyć do uruchomienia trybu „debugowania” w WordPress. Domyślnie przyjmuje się, że jest to fałsz i zwykle jest ustawiony na true w pliku wp-config.php
na kopiach programistycznych WordPress.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG', false );
WP_DEBUG_LOG
WP_DEBUG_LOG
jest towarzyszem WP_DEBUG, który powoduje, że wszystkie błędy są również zapisywane w pliku dziennika debug.log w katalogu / wp-content /. Jest to przydatne, jeśli chcesz przejrzeć wszystkie powiadomienia później lub chcesz wyświetlić powiadomienia wygenerowane poza ekranem (np. Podczas żądania AJAX lub uruchomienia wp-cron).
//enable
define( 'WP_DEBUG_LOG', true );
//disable
define( 'WP_DEBUG_LOG', false );
WP_DEBUG_DISPLAY
WP_DEBUG_DISPLAY
to kolejny towarzysz WP_DEBUG, który kontroluje, czy komunikaty debugowania są wyświetlane w kodzie HTML stron, czy nie. Wartość domyślna to „prawda”, która pokazuje błędy i ostrzeżenia podczas ich generowania. Ustawienie wartości false spowoduje ukrycie wszystkich błędów. Należy tego używać w połączeniu z WP_DEBUG_LOG, aby błędy można było później przejrzeć. Uwaga: aby WP_DEBUG_DISPLAY mógł cokolwiek zrobić, WP_DEBUG musi być włączony (prawda).
//enable
define( 'WP_DEBUG_DISPLAY', true );
//disable
define( 'WP_DEBUG_DISPLAY', false );
SCRIPT_DEBUG
SCRIPT_DEBUG
jest powiązaną stałą, która zmusi WordPress do używania „dev” wersji podstawowych plików CSS i JavaScript, a nie zminimalizowanych wersji, które są normalnie ładowane. Jest to przydatne podczas testowania modyfikacji wbudowanych plików .js lub .css. Wartość domyślna to false.
//enable
define( 'SCRIPT_DEBUG', true );
//disable
define( 'SCRIPT_DEBUG', false );
OSZCZĘDNOŚCI
Definicja SAVEQUERIES zapisuje zapytania do bazy danych w tablicy, która może zostać wyświetlona w celu analizy tych zapytań. Stała zdefiniowana jako prawda powoduje, że każde zapytanie jest zapisywane, czas jego wykonania i nazwa tej funkcji. UWAGA: Wpłynie to na wydajność Twojej witryny, więc wyłącz ją, jeśli nie debugujesz.
define( 'SAVEQUERIES', true );
Tablica jest przechowywana w
global $wpdb->queries;
Przykład wp-config.php i dobre praktyki dotyczące debugowania
Poniższy kod wstawiony do pliku wp-config.php będzie rejestrować wszystkie błędy, powiadomienia i ostrzeżenia w pliku o nazwie debug.log w katalogu treści wp-config. Ukryje również błędy, aby nie zakłócały generowania strony.
// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );
Dobra praktyka Jeśli chcesz dodać niestandardowe komunikaty do dziennika debugowania, dodaj poniższy kod do wtyczki lub motywu.
//Checking is function_exists
if ( !function_exists( 'print_to_log' ) ) {
//function writes a message to debug.log if debugging is turned on.
function print_to_log( $message )
{
if ( true === WP_DEBUG ) {
if ( is_array( $message ) || is_object( $message ) ) {
error_log( print_r( $message, true ) );
} else {
error_log( $message );
}
}
}
}
Zobacz dzienniki w osobnym pliku
Kiedy masz wywołanie ajax, niezwykle trudno jest uzyskać log z wnętrza funkcji zwrotnej. Ale jeśli włączysz debugowanie
define('WP_DEBUG', true);
a następnie dodaj
ini_set('log_errors',TRUE);
ini_set('error_reporting', E_ALL);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
będziesz mieć plik error.log.txt
w folderze głównym, w którym znajdują się wszystkie dzienniki. możesz nawet je zalogować
error_log( print_r( 'what I want to check goes here', true) );
wewnątrz twojego kodu. To znacznie ułatwi ci życie.