Ми можемо змінювати виведення функції 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константи.
Також слідкуйте за можливою плутаниною булів із постійним вимкненням, але фільтр дозволяє .
У моєму тестуванні підхід до фільтру як плагін, який потрібно використовувати , не працює, як очікувалося, тому я використовую константу замість цього. Сподіваюся, я можу розглянути це далі.
Можна також додати призначену для користувача розкривається в файлі 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_DEBUGяк істинне не відключить захист WSOD. Це за дизайном. Див. # 46825