Настройка режима отладки в WordPress с помощью функции WP_DEBUG_MODE()
Функция WP_DEBUG_MODE() предназначена для настройки отчётности об ошибках PHP в соответствии с параметрами отладки WordPress. Она использует три константы: WP_DEBUG, WP_DEBUG_DISPLAY и WP_DEBUG_LOG, которые можно определить в файле wp-config.php. По умолчанию WP_DEBUG и WP_DEBUG_LOG установлены в значение false, а WP_DEBUG_DISPLAY — в true.
Что такое WP_DEBUG?
Когда WP_DEBUG установлено в true, WordPress будет отображать все уведомления PHP. Также будут показываться внутренние уведомления, например, когда используется устаревшая функция WordPress или аргументы функции. Код, который помечен как устаревший, может быть удалён в следующей версии.
Рекомендации для разработчиков
Разработчикам плагинов и тем настоятельно рекомендуется включать режим отладки WP_DEBUG в своих рабочих средах.
Как работают WP_DEBUG_DISPLAY и WP_DEBUG_LOG?
Эти две константы активируются только тогда, когда WP_DEBUG установлено в true.
WP_DEBUG_DISPLAY
Когда WP_DEBUG_DISPLAY равно true, WordPress будет отображать ошибки на экране. По умолчанию это значение установлено в true. Если установить его в null, это предотвратит изменение глобальных настроек конфигурации WordPress. Установка WP_DEBUG_DISPLAY в false скроет ошибки.
WP_DEBUG_LOG
Когда WP_DEBUG_LOG установлено в true, ошибки записываются в файл wp-content/debug.log. Если указанный путь в WP_DEBUG_LOG действителен, ошибки будут записываться в указанный файл.
Ошибки никогда не отображаются для запросов XML-RPC, REST, ms-files.php и Ajax.
Пример использования функции
Функция wp_debug_mode() используется ядром WordPress для управления ошибками и не предназначена для использования в разрабатываемом коде.
function wp_debug_mode() {
if ( ! apply_filters( 'enable_wp_debug_mode_checks', true ) ) {
return;
}
if ( WP_DEBUG ) {
error_reporting( E_ALL );
if ( WP_DEBUG_DISPLAY ) {
ini_set( 'display_errors', 1 );
} elseif ( null !== WP_DEBUG_DISPLAY ) {
ini_set( 'display_errors', 0 );
}
if ( in_array( strtolower( (string) WP_DEBUG_LOG ), array( 'true', '1' ), true ) ) {
$log_path = WP_CONTENT_DIR . '/debug.log';
} elseif ( is_string( WP_DEBUG_LOG ) ) {
$log_path = WP_DEBUG_LOG;
} else {
$log_path = false;
}
if ( $log_path ) {
ini_set( 'log_errors', 1 );
ini_set( 'error_log', $log_path );
}
} else {
error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
}
if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || defined( 'MS_FILES_REQUEST' )
|| ( defined( 'WP_INSTALLING' ) && WP_INSTALLING )
|| wp_doing_ajax() || wp_is_json_request()
) {
ini_set( 'display_errors', 0 );
}
}
Изменения в версии
- С версии 3.0.0: Функция была введена.
- С версии 5.1.0:
WP_DEBUG_LOGможет быть задан в виде пути к файлу.
Подводя итоги
Настройка режима отладки в WordPress с помощью WP_DEBUG_MODE() — это полезный инструмент для выявления и устранения ошибок. Использование констант WP_DEBUG, WP_DEBUG_DISPLAY и WP_DEBUG_LOG поможет вам управлять тем, как и где ошибки будут отображаться или записываться. Эта информация важна как для разработчиков, так и для администраторов сайтов WordPress.