Administration: Don't print the .php-error class in the admin header for PHP notices in wp-config.php.

Any notices in that file happen before `WP_DEBUG` takes effect,	and should not be displayed with the `error_reporting` level previously set in `wp-load.php`.

Adding the class when there is no notice displayed results in extra padding under the admin bar, which should be avoided.

Follow-up to [20102], [21025], [26620], [47745].

Props akissz, tw2113, laxman-prajapati, sabernhardt, johnbillion, SergeyBiryukov.
Fixes #51073.

git-svn-id: https://develop.svn.wordpress.org/trunk@48850 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2020-08-24 10:46:30 +00:00
parent a6bb0120ac
commit ce10049fcc

View File

@ -198,11 +198,19 @@ if ( $current_screen->is_block_editor() ) {
} }
} }
$error = error_get_last();
// Print a CSS class to make PHP errors visible. // Print a CSS class to make PHP errors visible.
if ( error_get_last() && WP_DEBUG && WP_DEBUG_DISPLAY && ini_get( 'display_errors' ) ) { if ( $error && WP_DEBUG && WP_DEBUG_DISPLAY && ini_get( 'display_errors' )
// Don't print the class for PHP notices in wp-config.php, as they happen before WP_DEBUG takes effect,
// and should not be displayed with the `error_reporting` level previously set in wp-load.php.
&& ( E_NOTICE !== $error['type'] || 'wp-config.php' !== wp_basename( $error['file'] ) )
) {
$admin_body_class .= ' php-error'; $admin_body_class .= ' php-error';
} }
unset( $error );
?> ?>
</head> </head>
<?php <?php