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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow