При разработке тем и плагинов под 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:
<?php class Mihdan_Fatal_Error_Handler { public function handle() {} } return new Mihdan_Fatal_Error_Handler;
В РНР 7+ можно использовать анонимные классы:
<?php return new Class(){ public function handle() {} };
Расширение обработчика
При большом желании можно расширить стардартный класс обработчик ошибок WP_Fatal_Error_Handler
:
class Mihdan_Fatal_Error_Handler extends WP_Fatal_Error_Handler { }
Ссылки
Источник: https://www.kobzarev.com/wordpress/disable-fatal-error-handler/