Настройка режима отладки в WordPress: функция WP_DEBUG_MODE()

Настройка режима отладки в 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *