Мы можем изменить вывод функции boolwp_is_fatal_error_handler_enabled() двумя способами:
постоянная
Установите WP_DISABLE_FATAL_ERROR_HANDLERконстанту trueв wp-config.phpфайле:
/**
* Disable the fatal error handler.
*/
const WP_DISABLE_FATAL_ERROR_HANDLER = true;
или
define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );
Фильтр
Используйте wp_fatal_error_handler_enabledфильтр bool:
/**
* Disable the fatal error handler.
*/
add_filter( 'wp_fatal_error_handler_enabled', '__return_false' );
Заметки
Смотри билет # 44458
wp_fatal_error_handler_enabledФильтр будет перекрывать значение WP_DISABLE_FATAL_ERROR_HANDLERконстанты.
Также следите за возможную путаницу BOOL с постоянным отключением но фильтр позволяет .
В моем тестировании подход фильтра, как обязательный плагин, не работает должным образом, поэтому вместо него я использую константу. Надеюсь, я смогу изучить это дальше.
Можно также добавить пользовательскую раскрывающийся в файле fatal-error-handler.phpв wp-contentкаталог ( Src ), чтобы переопределить WP_Fatal_Error_Handlerкласс по мере необходимости. Мы должны использовать другое имя класса, и он должен определить handle()метод как зарегистрированную функцию завершения работы .
Простым примером его отключения является переопределение класса обработчика ошибок по умолчанию на собственный, который ничего не делает:
<?php
class WPSE_Fatal_Error_Handler {
public function handle() {}
}
return new WPSE_Fatal_Error_Handler;
Анонимный класс в PHP 7+ также работает:
<?php
return new Class(){
public function handle() {}
};
Это может также расширить WP_Fatal_Error_Handlerкласс по умолчанию, если это необходимо.
Тогда есть WP_SANDBOX_SCRAPINGконстанта. Смотри # 46045
Установка значения WP_DEBUGtrue не приведет к отключению защиты WSOD. Это по замыслу. Смотрите # 46825