| | 3889 | // Ensure HTTP 500 status code for critical errors, even if headers were already sent. |
| | 3890 | $is_critical_error = false; |
| | 3891 | if ( is_string( $message ) ) { |
| | 3892 | $is_critical_error = ( |
| | 3893 | false !== stripos( $message, 'critical error' ) || |
| | 3894 | false !== stripos( $message, 'There has been a critical error' ) |
| | 3895 | ); |
| | 3896 | } elseif ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) { |
| | 3897 | $error_message = $message->get_error_message(); |
| | 3898 | $is_critical_error = ( |
| | 3899 | false !== stripos( $error_message, 'critical error' ) || |
| | 3900 | false !== stripos( $error_message, 'There has been a critical error' ) |
| | 3901 | ); |
| | 3902 | } |
| | 3903 | |
| | 3904 | if ( $is_critical_error ) { |
| | 3905 | $parsed_args['response'] = 500; |
| | 3906 | // Set HTTP status code even if headers were already sent. |
| | 3907 | if ( function_exists( 'http_response_code' ) ) { |
| | 3908 | http_response_code( 500 ); |
| | 3909 | } |
| | 3910 | } |
| | 3911 | |