WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

wp_debug_mode() WP 3.0.0

Устанавливает настройки обработки ошибок в PHP на основе того какие константы указаны wp-config.php файле WordPress.

Использует три константы:

  • WP_DEBUG (по умолчанию false)
  • WP_DEBUG_DISPLAY (по умолчанию true)
  • WP_DEBUG_LOG (по умолчанию false)

Все они определяются ранней функцией wp_initial_constants() и могут быть определены в файле wp-config.php.

WP_DEBUG

Если включить WP_DEBUG (указать значение true), то все PHP ошибки (заметки и предупреждения) будут выводиться на экран. WordPress при этом также показывает внутренние заметки, которая создаются самим WordPress, когда используются устаревшие функции или устаревшие переменные функций или когда переменные используются неправильно. Устаревшие функции могут быть удалены в поздних версиях WordPress.

Важно! Отключенный WP_DEBUG не отключает показ всех видов ошибок! Т.е. при отключенном WP_DEBUG будут показаны (обработаны) следующие типы ошибок:

  • E_CORE_ERROR
  • E_CORE_WARNING
  • E_COMPILE_ERROR
  • E_ERROR
  • E_WARNING
  • E_PARSE
  • E_USER_ERROR
  • E_USER_WARNING
  • E_RECOVERABLE_ERROR

Так, если например на сервер по дефолту указано показывать ошибки и при этом WP_DEBUG отключен, то вы все равно будите видеть ошибки указанных выше типов, например WARNING.

Включение WP_DEBUG не изменяет значение других констант. Т.е. если выключить WP_DEBUG, то WP_DEBUG_DISPLAY и WP_DEBUG_LOG сохранят свои дефолтные значения и на основе этих значений будут выставлены PHP настройки показа и логирования ошибок.

Разработчикам настоятельно рекомендуется включать WP_DEBUG при создании тем и плагинов.

Подробнее про WP_DEBUG.

WP_DEBUG_DISPLAY

Когда WP_DEBUG_DISPLAY = true, WordPress показывает ошибки экран.

Если указать в wp-config.php:

  • define( 'WP_DEBUG_DISPLAY', true ) — (по умолчанию) WP будет выводить (показывать) ошибки на экран.
  • define( 'WP_DEBUG_DISPLAY', null ); — то WP вообще не будет указывать значение для PHP опции display_errors, т.е. будет использована глобальная настройка PHP (сервера).
  • define( 'WP_DEBUG_DISPLAY', false ); — то показ ошибок будет отключен.

Показ ошибок всегда отключается для REST, AJAX или XML-RPC запросов. Для них срабатывает такой код ini_set( 'display_errors', 0 ), но при этом значение константы WP_DEBUG_DISPLAY не изменяется!

WP_DEBUG_LOG

Если включить WP_DEBUG_LOG, то ошибки будут записываться в файл debug.log в папке контента, обычно это wp-content.

С версии 5.1 в значение этой константы можно передать путь до файла лога, куда нужно записывать ошибки.

Хуки из функции
Возвращает

Ничего.

Использование

wp_debug_mode();

Примеры

Примеров нет.

Эта функцию используется ядром для управления над ошибками и не предназначена для использования в разработке.

Список изменений

С версии 3.0.0 Введена.
С версии 5.1.0 WP_DEBUG_LOG can be a file path.

Код wp debug mode: wp-includes/load.php WP 5.2.4

<?php
function wp_debug_mode() {
	/**
	 * Filters whether to allow the debug mode check to occur.
	 *
	 * This filter runs before it can be used by plugins. It is designed for
	 * non-web run-times. Returning false causes the `WP_DEBUG` and related
	 * constants to not be checked and the default php values for errors
	 * will be used unless you take care to update them yourself.
	 *
	 * @since 4.6.0
	 *
	 * @param bool $enable_debug_mode Whether to enable debug mode checks to occur. Default true.
	 */
	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( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() || wp_is_json_request() ) {
		@ini_set( 'display_errors', 0 );
	}
}

Cвязанные функции

Из метки: debug (дебаг)

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться