diff --git a/src/wp-includes/class-wpdb.php b/src/wp-includes/class-wpdb.php index 869111efd0797..dcac704007cba 100644 --- a/src/wp-includes/class-wpdb.php +++ b/src/wp-includes/class-wpdb.php @@ -1957,7 +1957,8 @@ public function flush() { * If `$allow_bail` is false, the lack of database connection will need to be handled manually. * * @since 3.0.0 - * @since 3.9.0 $allow_bail parameter added. + * @since 3.9.0 Added `$allow_bail` parameter. + * @since 7.2.0 Added status and no-cache headers before loading a custom `db-error.php` drop-in. * * @param bool $allow_bail Optional. Allows the function to bail. Default true. * @return bool True with a successful connection, false on failure. @@ -2009,8 +2010,13 @@ public function db_connect( $allow_bail = true ) { if ( ! $this->dbh && $allow_bail ) { wp_load_translations_early(); - // Load custom DB error template, if present. + /* + * Load custom DB error template, if present. + * A 500 status header and no-cache headers are now sent before loading a custom db-error.php drop-in. + */ if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) { + status_header( 500 ); + nocache_headers(); require_once WP_CONTENT_DIR . '/db-error.php'; die(); } diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 4c323812991d7..f3d74749a150c 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -5634,6 +5634,7 @@ function wp_ob_end_flush_all() { * in WordPress 2.5.0. * * @since 2.3.2 + * @since 7.2.0 Added status and no-cache headers before loading a custom `db-error.php` drop-in. * * @global wpdb $wpdb WordPress database abstraction object. * @@ -5646,6 +5647,8 @@ function dead_db() { // Load custom DB error template, if present. if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) { + status_header( 500 ); + nocache_headers(); require_once WP_CONTENT_DIR . '/db-error.php'; die(); } diff --git a/src/wp-includes/load.php b/src/wp-includes/load.php index 9d407453424c5..71dc7d47df44e 100644 --- a/src/wp-includes/load.php +++ b/src/wp-includes/load.php @@ -395,6 +395,7 @@ function wp_favicon_request() { * the wp-content directory). * * @since 3.0.0 + * @since 7.2.0 Added status and no-cache headers before loading a custom `maintenance.php` drop-in. * @access private */ function wp_maintenance() { @@ -403,12 +404,16 @@ function wp_maintenance() { return; } + require_once ABSPATH . WPINC . '/functions.php'; + if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) { + status_header( 503 ); + nocache_headers(); + header( 'Retry-After: 600' ); require_once WP_CONTENT_DIR . '/maintenance.php'; die(); } - require_once ABSPATH . WPINC . '/functions.php'; wp_load_translations_early(); header( 'Retry-After: 600' );