mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 12:20:22 +00:00
Bootstrap/Load: Introduce fatal error handler.
This changeset introduces a `WP_Fatal_Error_Handler` class that detects fatal errors and displays a more user-friendly message about the site experiencing technical difficulties. Websites that have custom requirements in that regard can implement their own fatal error handler by adding a `fatal-error-handler.php` drop-in that returns the handler instance to use, which must be based on a class that inherits `WP_Fatal_Error_Handler`. That handler will then be used in place of the default one. Alternatively, the fatal error handler feature can be completely disable through a constant `WP_DISABLE_FATAL_ERROR_HANDLER`. Websites that would like to modify specifically the error template displayed in the frontend can add a `php-error.php` drop-in that works similarly to the existing `db-error.php` drop-in. For more granular customization, the fatal error handler also includes new filters `wp_should_handle_php_error`, `wp_php_error_message` and `wp_php_error_args`. Props afragen, bradleyt, flixos90, ocean90, schlessera, SergeyBiryukov, spacedmonkey, timothyblynjacobs. See #46130, #44458. git-svn-id: https://develop.svn.wordpress.org/trunk@44962 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -17,9 +17,14 @@ define( 'WPINC', 'wp-includes' );
|
||||
|
||||
// Include files required for initialization.
|
||||
require( ABSPATH . WPINC . '/load.php' );
|
||||
require( ABSPATH . WPINC . '/class-wp-fatal-error-handler.php' );
|
||||
require( ABSPATH . WPINC . '/error-protection.php' );
|
||||
require( ABSPATH . WPINC . '/default-constants.php' );
|
||||
require_once( ABSPATH . WPINC . '/plugin.php' );
|
||||
|
||||
// Make sure we register the shutdown handler for fatal errors as soon as possible.
|
||||
wp_register_fatal_error_handler();
|
||||
|
||||
/*
|
||||
* These can't be directly globalized in version.php. When updating,
|
||||
* we're including version.php from another installation and don't want
|
||||
@@ -528,3 +533,12 @@ if ( is_multisite() ) {
|
||||
* @since 3.0.0
|
||||
*/
|
||||
do_action( 'wp_loaded' );
|
||||
|
||||
/*
|
||||
* Store the fact that we could successfully execute the entire WordPress
|
||||
* lifecycle. This is used to skip the premature shutdown handler, as it cannot
|
||||
* be unregistered.
|
||||
*/
|
||||
if ( ! defined( 'WP_EXECUTION_SUCCEEDED' ) ) {
|
||||
define( 'WP_EXECUTION_SUCCEEDED', true );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user