WordPress как на ладони

Отключение обработки PHP ошибок плагинов, тем, всех ошибок

Query Monitor

Когда во время загрузки страницы появляется предупреждение или уведомление PHP, Query Monitor отображает цветное уведомление в панели инструментов, которое ссылается на панель ошибок PHP. Это отлично подходит для отладки своего кода, но может мешать, когда сторонний плагин или тема выдают ошибки.

Отключить ошибки для указанных плагинов или тем

Ошибки по-прежнему будут отображаться в панели ошибок PHP, но они не вызовут цветное уведомление в админ баре. (При необходимости их можно скрыть полностью.)

Так можно скрыть ошибки PHP у плагина с именем plugin_name:

add_filter( 'qm/collect/php_error_levels', function( array $levels ) {
	$levels['plugin']['plugin_name'] = ( E_ALL & ~E_NOTICE );
	return $levels;
} );

Этот код подключается к фильтру qm/collect/php_error_levels и определяет ошибоки, о которых должен сообщать Query Monitor для указанного плагина. Уровни ошибок задаются с использованием того же синтаксиса битовой маски, который используется для функции error_reporting() в PHP. В этом примере QM сообщает обо всех ошибках, кроме заметок.

Также можно указать Query Monitor сообщать только о предупреждениях из дочерней темы и полностью отключать ошибки из родительской темы:

add_filter( 'qm/collect/php_error_levels', function( array $levels ) {
	$levels['theme']['stylesheet'] = ( E_WARNING & E_USER_WARNING );
	$levels['theme']['template']   = ( 0 );
	return $levels;
} );

Любой плагин или тема, которая не имеет уровень ошибки, указанный с помощью этого фильтра, скорее всего, имеют уровень по умолчанию E_ALL, который показывает все ошибки.

Отключение ошибок с подавлением @

Можно полностью удалить ошибки с подавлением (@) из данных Query Monitor. Но помните, что это может привести к проблемам, если забудете, что установили этот код:

add_filter( 'qm/collect/hide_silenced_php_errors', '__return_true' );

Полное отключение перехвата ошибок

И наконец, если у вас свой обработчик ошибок в PHP, и вы не хотите, чтобы Query Monitor не обрабатывал ошибки, можно полностью отключить функцию обработки ошибок:

define( 'QM_DISABLE_ERROR_HANDLER', true );
1 комментарий
    Войти