Отключение обработчика фатальных ошибок WordPress

При разработке тем и плагинов под WordPress часто требуется отключить встроенный обработчик белого экрана смерти(WSOD), чтобы лицезреть ошибки на экране, а не ловить их на email, как почтовый голубь.

Вся загвоздка заключается в том, что включение вывода ошибок на экран с помощью константы WP_DEBUG не отключает обработчик WSOD.

Отключение с помощью константы

Определите константу WP_DISABLE_FATAL_ERROR_HANDLER в файле конфигурации wp-config.php:

const WP_DISABLE_FATAL_ERROR_HANDLER = true;

Для старых версий PHP:

define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true);

Отключение с помощью фильтра

Определите фильтр wp_fatal_error_handler_enabled в возможностях темы functions.php:

/** * Disable the fatal error handler. */add_filter( 'wp_fatal_error_handler_enabled', '__return_false');

Фильтр wp_fatal_error_handler_enabled имеет в себя приоритет над константой WP_DISABLE_FATAL_ERROR_HANDLER.

Свой обработчик ошибок

Также есть функция не просто отключить обработчик WSOD, а заменить его на. Для этого создайте файл fatal-error-handler.php в папке wp-content:

<?phpclass Mihdan_Fatal_Error_Handler { public function handle() {}}return new Mihdan_Fatal_Error_Handler;

В РНР 7+ можно использовать анонимные классы:

<?phpreturn new Class(){ public function handle() {}};

Расширение обработчика

При большом желании можно расширить стардартный класс обработчик ошибок WP_Fatal_Error_Handler:

class Mihdan_Fatal_Error_Handler extends WP_Fatal_Error_Handler {}

Ссылки

  • Функцию wp_is_fatal_error_handler_enabled()
  • How to disable the fatal error(WSOD) protection?

Добавить комментарий

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