WordPress
отладка
Поиск…
Вступление
https://codex.wordpress.org/Debugging_in_WordPress
Отладка PHP-кода является частью любого проекта, но WordPress поставляется с определенными системами отладки, предназначенными для упрощения процесса, а также стандартизации кода по всему ядру, плагинам и темам.
замечания
Плагины для отладки в WordPress:
WP_DEBUG
WP_DEBUG
- это постоянная PHP (постоянная глобальная переменная), которая может использоваться для запуска режима «отладки» в WordPress. Предполагается, что он по умолчанию является ложным и обычно устанавливается в true в файле wp-config.php
на копии разработки WordPress.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG', false );
WP_DEBUG_LOG
WP_DEBUG_LOG
является компаньоном WP_DEBUG, который заставляет все ошибки также сохраняться в файле журнала debug.log в каталоге / wp-content /. Это полезно, если вы хотите просмотреть все уведомления позже или просмотреть заметки, созданные вне экрана (например, во время запроса AJAX или прогона wp-cron).
//enable
define( 'WP_DEBUG_LOG', true );
//disable
define( 'WP_DEBUG_LOG', false );
WP_DEBUG_DISPLAY
WP_DEBUG_DISPLAY
является еще одним компаньоном WP_DEBUG, который контролирует, отображаются ли отладочные сообщения внутри HTML-страниц или нет. Значение по умолчанию - «true», которое показывает ошибки и предупреждения по мере их создания. Установка этого значения в false приведет к скрыть все ошибки. Это должно использоваться в сочетании с WP_DEBUG_LOG, чтобы ошибки можно было рассмотреть позже. Примечание: для WP_DEBUG_DISPLAY что-то делать, WP_DEBUG должен быть включен (true).
//enable
define( 'WP_DEBUG_DISPLAY', true );
//disable
define( 'WP_DEBUG_DISPLAY', false );
SCRIPT_DEBUG
SCRIPT_DEBUG
- связанная константа, которая заставит WordPress использовать «dev» версии базовых файлов CSS и JavaScript, а не мини-версии, которые обычно загружаются. Это полезно, если вы тестируете модификации любых встроенных файлов .js или .css. Значение по умолчанию - false.
//enable
define( 'SCRIPT_DEBUG', true );
//disable
define( 'SCRIPT_DEBUG', false );
SAVEQUERIES
Определение SAVEQUERIES сохраняет запросы базы данных к массиву и этот массив может отображаться для анализа этих запросов. Константа, определенная как истина, заставляет каждый запрос быть сохраненным, как долго выполнялся этот запрос для выполнения и какая функция называла его. ПРИМЕЧАНИЕ. Это повлияет на ваш сайт, поэтому обязательно отключите его, если вы не выполните отладки.
define( 'SAVEQUERIES', true );
Массив хранится в
global $wpdb->queries;
Пример wp-config.php и передовая практика для отладки
Следующий код, вставленный в ваш файл wp-config.php, будет регистрировать все ошибки, уведомления и предупреждения в файле debug.log в каталоге wp-content. Это также скроет ошибки, чтобы они не прерывали создание страниц.
// 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 );
Хорошая практика Если вы хотите добавить специальные сообщения для отладки журнала, добавьте следующий код в свой плагин или тему.
//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 );
}
}
}
}
Просмотр журналов в отдельном файле
Когда у вас есть вызов ajax, чрезвычайно сложно получить журнал изнутри функции обратного вызова. Но если вы включите отладку
define('WP_DEBUG', true);
а затем после этого добавить
ini_set('log_errors',TRUE);
ini_set('error_reporting', E_ALL);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
у вас будет файл error.log.txt
в корневой папке, где находятся все ваши журналы. вы можете даже зарегистрировать их с помощью
error_log( print_r( 'what I want to check goes here', true) );
внутри вашего кода. Это сделает вашу жизнь намного легче.