เราสามารถแก้ไขเอาต์พุต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