เราสามารถแก้ไขเอาต์พุตboolของwp_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ตัวกรองบูล:
/**
* 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