Displays the default PHP error template.
Description
This method is called conditionally if no ‘php-error.php’ drop-in is available.
It calls wp_die() with a message indicating that the site is experiencing technical difficulties and a login link to the admin backend. The ‘wp_php_error_message’ and ‘wp_php_error_args’ filters can be used to modify these parameters.
Parameters
$error
arrayrequired- Error information retrieved from
error_get_last()
. $handled
true|WP_Errorrequired- Whether Recovery Mode handled the fatal error.
Source
protected function display_default_error_template( $error, $handled ) {
if ( ! function_exists( '__' ) ) {
wp_load_translations_early();
}
if ( ! function_exists( 'wp_die' ) ) {
require_once ABSPATH . WPINC . '/functions.php';
}
if ( ! class_exists( 'WP_Error' ) ) {
require_once ABSPATH . WPINC . '/class-wp-error.php';
}
if ( true === $handled && wp_is_recovery_mode() ) {
$message = __( 'There has been a critical error on this website, putting it in recovery mode. Please check the Themes and Plugins screens for more details. If you just installed or updated a theme or plugin, check the relevant page for that first.' );
} elseif ( is_protected_endpoint() && wp_recovery_mode()->is_initialized() ) {
if ( is_multisite() ) {
$message = __( 'There has been a critical error on this website. Please reach out to your site administrator, and inform them of this error for further assistance.' );
} else {
$message = sprintf(
/* translators: %s: Support forums URL. */
__( 'There has been a critical error on this website. Please check your site admin email inbox for instructions. If you continue to have problems, please try the <a href="%s">support forums</a>.' ),
__( 'https://wordpress.org/support/forums/' )
);
}
} else {
$message = __( 'There has been a critical error on this website.' );
}
$message = sprintf(
'<p>%s</p><p><a href="%s">%s</a></p>',
$message,
/* translators: Documentation about troubleshooting. */
__( 'https://wordpress.org/documentation/article/faq-troubleshooting/' ),
__( 'Learn more about troubleshooting WordPress.' )
);
$args = array(
'response' => 500,
'exit' => false,
);
/**
* Filters the message that the default PHP error template displays.
*
* @since 5.2.0
*
* @param string $message HTML error message to display.
* @param array $error Error information retrieved from `error_get_last()`.
*/
$message = apply_filters( 'wp_php_error_message', $message, $error );
/**
* Filters the arguments passed to wp_die() for the default PHP error template.
*
* @since 5.2.0
*
* @param array $args Associative array of arguments passed to `wp_die()`. By default these contain a
* 'response' key, and optionally 'link_url' and 'link_text' keys.
* @param array $error Error information retrieved from `error_get_last()`.
*/
$args = apply_filters( 'wp_php_error_args', $args, $error );
$wp_error = new WP_Error(
'internal_server_error',
$message,
array(
'error' => $error,
)
);
wp_die( $wp_error, '', $args );
}
Hooks
- apply_filters( ‘wp_php_error_args’,
array $args ,array $error ) Filters the arguments passed to <a href="https://developer.wordpress.org/reference/functions/wp_die/" rel="function">wp_die()</a> for the default PHP error template.
- apply_filters( ‘wp_php_error_message’,
string $message ,array $error ) Filters the message that the default PHP error template displays.
User Contributed Notes
You must log in before being able to contribute a note or feedback.