Edit File by line
/home/zeestwma/redstone.../wp-inclu...
File: load.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* These functions are needed to load WordPress.
[2] Fix | Delete
*
[3] Fix | Delete
* @package WordPress
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
/**
[7] Fix | Delete
* Returns the HTTP protocol sent by the server.
[8] Fix | Delete
*
[9] Fix | Delete
* @since 4.4.0
[10] Fix | Delete
*
[11] Fix | Delete
* @return string The HTTP protocol. Default: HTTP/1.0.
[12] Fix | Delete
*/
[13] Fix | Delete
function wp_get_server_protocol() {
[14] Fix | Delete
$protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : '';
[15] Fix | Delete
[16] Fix | Delete
if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3' ), true ) ) {
[17] Fix | Delete
$protocol = 'HTTP/1.0';
[18] Fix | Delete
}
[19] Fix | Delete
[20] Fix | Delete
return $protocol;
[21] Fix | Delete
}
[22] Fix | Delete
[23] Fix | Delete
/**
[24] Fix | Delete
* Fixes `$_SERVER` variables for various setups.
[25] Fix | Delete
*
[26] Fix | Delete
* @since 3.0.0
[27] Fix | Delete
* @access private
[28] Fix | Delete
*
[29] Fix | Delete
* @global string $PHP_SELF The filename of the currently executing script,
[30] Fix | Delete
* relative to the document root.
[31] Fix | Delete
*/
[32] Fix | Delete
function wp_fix_server_vars() {
[33] Fix | Delete
global $PHP_SELF;
[34] Fix | Delete
[35] Fix | Delete
$default_server_values = array(
[36] Fix | Delete
'SERVER_SOFTWARE' => '',
[37] Fix | Delete
'REQUEST_URI' => '',
[38] Fix | Delete
);
[39] Fix | Delete
[40] Fix | Delete
$_SERVER = array_merge( $default_server_values, $_SERVER );
[41] Fix | Delete
[42] Fix | Delete
// Fix for IIS when running with PHP ISAPI.
[43] Fix | Delete
if ( empty( $_SERVER['REQUEST_URI'] )
[44] Fix | Delete
|| ( 'cgi-fcgi' !== PHP_SAPI && preg_match( '/^Microsoft-IIS\//', $_SERVER['SERVER_SOFTWARE'] ) )
[45] Fix | Delete
) {
[46] Fix | Delete
[47] Fix | Delete
if ( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ) {
[48] Fix | Delete
// IIS Mod-Rewrite.
[49] Fix | Delete
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
[50] Fix | Delete
} elseif ( isset( $_SERVER['HTTP_X_REWRITE_URL'] ) ) {
[51] Fix | Delete
// IIS Isapi_Rewrite.
[52] Fix | Delete
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
[53] Fix | Delete
} else {
[54] Fix | Delete
// Use ORIG_PATH_INFO if there is no PATH_INFO.
[55] Fix | Delete
if ( ! isset( $_SERVER['PATH_INFO'] ) && isset( $_SERVER['ORIG_PATH_INFO'] ) ) {
[56] Fix | Delete
$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
// Some IIS + PHP configurations put the script-name in the path-info (no need to append it twice).
[60] Fix | Delete
if ( isset( $_SERVER['PATH_INFO'] ) ) {
[61] Fix | Delete
if ( $_SERVER['PATH_INFO'] === $_SERVER['SCRIPT_NAME'] ) {
[62] Fix | Delete
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
[63] Fix | Delete
} else {
[64] Fix | Delete
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
[65] Fix | Delete
}
[66] Fix | Delete
}
[67] Fix | Delete
[68] Fix | Delete
// Append the query string if it exists and isn't null.
[69] Fix | Delete
if ( ! empty( $_SERVER['QUERY_STRING'] ) ) {
[70] Fix | Delete
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
[71] Fix | Delete
}
[72] Fix | Delete
}
[73] Fix | Delete
}
[74] Fix | Delete
[75] Fix | Delete
// Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests.
[76] Fix | Delete
if ( isset( $_SERVER['SCRIPT_FILENAME'] ) && str_ends_with( $_SERVER['SCRIPT_FILENAME'], 'php.cgi' ) ) {
[77] Fix | Delete
$_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
// Fix for Dreamhost and other PHP as CGI hosts.
[81] Fix | Delete
if ( isset( $_SERVER['SCRIPT_NAME'] ) && str_contains( $_SERVER['SCRIPT_NAME'], 'php.cgi' ) ) {
[82] Fix | Delete
unset( $_SERVER['PATH_INFO'] );
[83] Fix | Delete
}
[84] Fix | Delete
[85] Fix | Delete
// Fix empty PHP_SELF.
[86] Fix | Delete
$PHP_SELF = $_SERVER['PHP_SELF'];
[87] Fix | Delete
if ( empty( $PHP_SELF ) ) {
[88] Fix | Delete
$_SERVER['PHP_SELF'] = preg_replace( '/(\?.*)?$/', '', $_SERVER['REQUEST_URI'] );
[89] Fix | Delete
$PHP_SELF = $_SERVER['PHP_SELF'];
[90] Fix | Delete
}
[91] Fix | Delete
[92] Fix | Delete
wp_populate_basic_auth_from_authorization_header();
[93] Fix | Delete
}
[94] Fix | Delete
[95] Fix | Delete
/**
[96] Fix | Delete
* Populates the Basic Auth server details from the Authorization header.
[97] Fix | Delete
*
[98] Fix | Delete
* Some servers running in CGI or FastCGI mode don't pass the Authorization
[99] Fix | Delete
* header on to WordPress. If it's been rewritten to the `HTTP_AUTHORIZATION` header,
[100] Fix | Delete
* fill in the proper $_SERVER variables instead.
[101] Fix | Delete
*
[102] Fix | Delete
* @since 5.6.0
[103] Fix | Delete
*/
[104] Fix | Delete
function wp_populate_basic_auth_from_authorization_header() {
[105] Fix | Delete
// If we don't have anything to pull from, return early.
[106] Fix | Delete
if ( ! isset( $_SERVER['HTTP_AUTHORIZATION'] ) && ! isset( $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] ) ) {
[107] Fix | Delete
return;
[108] Fix | Delete
}
[109] Fix | Delete
[110] Fix | Delete
// If either PHP_AUTH key is already set, do nothing.
[111] Fix | Delete
if ( isset( $_SERVER['PHP_AUTH_USER'] ) || isset( $_SERVER['PHP_AUTH_PW'] ) ) {
[112] Fix | Delete
return;
[113] Fix | Delete
}
[114] Fix | Delete
[115] Fix | Delete
// From our prior conditional, one of these must be set.
[116] Fix | Delete
$header = isset( $_SERVER['HTTP_AUTHORIZATION'] ) ? $_SERVER['HTTP_AUTHORIZATION'] : $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
[117] Fix | Delete
[118] Fix | Delete
// Test to make sure the pattern matches expected.
[119] Fix | Delete
if ( ! preg_match( '%^Basic [a-z\d/+]*={0,2}$%i', $header ) ) {
[120] Fix | Delete
return;
[121] Fix | Delete
}
[122] Fix | Delete
[123] Fix | Delete
// Removing `Basic ` the token would start six characters in.
[124] Fix | Delete
$token = substr( $header, 6 );
[125] Fix | Delete
$userpass = base64_decode( $token );
[126] Fix | Delete
[127] Fix | Delete
// There must be at least one colon in the string.
[128] Fix | Delete
if ( ! str_contains( $userpass, ':' ) ) {
[129] Fix | Delete
return;
[130] Fix | Delete
}
[131] Fix | Delete
[132] Fix | Delete
list( $user, $pass ) = explode( ':', $userpass, 2 );
[133] Fix | Delete
[134] Fix | Delete
// Now shove them in the proper keys where we're expecting later on.
[135] Fix | Delete
$_SERVER['PHP_AUTH_USER'] = $user;
[136] Fix | Delete
$_SERVER['PHP_AUTH_PW'] = $pass;
[137] Fix | Delete
}
[138] Fix | Delete
[139] Fix | Delete
/**
[140] Fix | Delete
* Checks the server requirements.
[141] Fix | Delete
*
[142] Fix | Delete
* - PHP version
[143] Fix | Delete
* - PHP extensions
[144] Fix | Delete
* - MySQL or MariaDB version (unless a database drop-in is present)
[145] Fix | Delete
*
[146] Fix | Delete
* Dies if requirements are not met.
[147] Fix | Delete
*
[148] Fix | Delete
* @since 3.0.0
[149] Fix | Delete
* @access private
[150] Fix | Delete
*
[151] Fix | Delete
* @global string $required_php_version The minimum required PHP version string.
[152] Fix | Delete
* @global string[] $required_php_extensions The names of required PHP extensions.
[153] Fix | Delete
* @global string $wp_version The WordPress version string.
[154] Fix | Delete
*/
[155] Fix | Delete
function wp_check_php_mysql_versions() {
[156] Fix | Delete
global $required_php_version, $required_php_extensions, $wp_version;
[157] Fix | Delete
[158] Fix | Delete
$php_version = PHP_VERSION;
[159] Fix | Delete
[160] Fix | Delete
if ( version_compare( $required_php_version, $php_version, '>' ) ) {
[161] Fix | Delete
$protocol = wp_get_server_protocol();
[162] Fix | Delete
header( sprintf( '%s 500 Internal Server Error', $protocol ), true, 500 );
[163] Fix | Delete
header( 'Content-Type: text/html; charset=utf-8' );
[164] Fix | Delete
printf(
[165] Fix | Delete
'Your server is running PHP version %1$s but WordPress %2$s requires at least %3$s.',
[166] Fix | Delete
$php_version,
[167] Fix | Delete
$wp_version,
[168] Fix | Delete
$required_php_version
[169] Fix | Delete
);
[170] Fix | Delete
exit( 1 );
[171] Fix | Delete
}
[172] Fix | Delete
[173] Fix | Delete
$missing_extensions = array();
[174] Fix | Delete
[175] Fix | Delete
if ( isset( $required_php_extensions ) && is_array( $required_php_extensions ) ) {
[176] Fix | Delete
foreach ( $required_php_extensions as $extension ) {
[177] Fix | Delete
if ( extension_loaded( $extension ) ) {
[178] Fix | Delete
continue;
[179] Fix | Delete
}
[180] Fix | Delete
[181] Fix | Delete
$missing_extensions[] = sprintf(
[182] Fix | Delete
'WordPress %1$s requires the <code>%2$s</code> PHP extension.',
[183] Fix | Delete
$wp_version,
[184] Fix | Delete
$extension
[185] Fix | Delete
);
[186] Fix | Delete
}
[187] Fix | Delete
}
[188] Fix | Delete
[189] Fix | Delete
if ( count( $missing_extensions ) > 0 ) {
[190] Fix | Delete
$protocol = wp_get_server_protocol();
[191] Fix | Delete
header( sprintf( '%s 500 Internal Server Error', $protocol ), true, 500 );
[192] Fix | Delete
header( 'Content-Type: text/html; charset=utf-8' );
[193] Fix | Delete
echo implode( '<br>', $missing_extensions );
[194] Fix | Delete
exit( 1 );
[195] Fix | Delete
}
[196] Fix | Delete
[197] Fix | Delete
// This runs before default constants are defined, so we can't assume WP_CONTENT_DIR is set yet.
[198] Fix | Delete
$wp_content_dir = defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR : ABSPATH . 'wp-content';
[199] Fix | Delete
[200] Fix | Delete
if ( ! function_exists( 'mysqli_connect' )
[201] Fix | Delete
&& ! file_exists( $wp_content_dir . '/db.php' )
[202] Fix | Delete
) {
[203] Fix | Delete
require_once ABSPATH . WPINC . '/functions.php';
[204] Fix | Delete
wp_load_translations_early();
[205] Fix | Delete
[206] Fix | Delete
$message = '<p>' . __( 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' ) . "</p>\n";
[207] Fix | Delete
[208] Fix | Delete
$message .= '<p>' . sprintf(
[209] Fix | Delete
/* translators: %s: mysqli. */
[210] Fix | Delete
__( 'Please check that the %s PHP extension is installed and enabled.' ),
[211] Fix | Delete
'<code>mysqli</code>'
[212] Fix | Delete
) . "</p>\n";
[213] Fix | Delete
[214] Fix | Delete
$message .= '<p>' . sprintf(
[215] Fix | Delete
/* translators: %s: Support forums URL. */
[216] Fix | Delete
__( 'If you are unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="%s">WordPress support forums</a>.' ),
[217] Fix | Delete
__( 'https://wordpress.org/support/forums/' )
[218] Fix | Delete
) . "</p>\n";
[219] Fix | Delete
[220] Fix | Delete
$args = array(
[221] Fix | Delete
'exit' => false,
[222] Fix | Delete
'code' => 'mysql_not_found',
[223] Fix | Delete
);
[224] Fix | Delete
wp_die(
[225] Fix | Delete
$message,
[226] Fix | Delete
__( 'Requirements Not Met' ),
[227] Fix | Delete
$args
[228] Fix | Delete
);
[229] Fix | Delete
exit( 1 );
[230] Fix | Delete
}
[231] Fix | Delete
}
[232] Fix | Delete
[233] Fix | Delete
/**
[234] Fix | Delete
* Retrieves the current environment type.
[235] Fix | Delete
*
[236] Fix | Delete
* The type can be set via the `WP_ENVIRONMENT_TYPE` global system variable,
[237] Fix | Delete
* or a constant of the same name.
[238] Fix | Delete
*
[239] Fix | Delete
* Possible values are 'local', 'development', 'staging', and 'production'.
[240] Fix | Delete
* If not set, the type defaults to 'production'.
[241] Fix | Delete
*
[242] Fix | Delete
* @since 5.5.0
[243] Fix | Delete
* @since 5.5.1 Added the 'local' type.
[244] Fix | Delete
* @since 5.5.1 Removed the ability to alter the list of types.
[245] Fix | Delete
*
[246] Fix | Delete
* @return string The current environment type.
[247] Fix | Delete
*/
[248] Fix | Delete
function wp_get_environment_type() {
[249] Fix | Delete
static $current_env = '';
[250] Fix | Delete
[251] Fix | Delete
if ( ! defined( 'WP_RUN_CORE_TESTS' ) && $current_env ) {
[252] Fix | Delete
return $current_env;
[253] Fix | Delete
}
[254] Fix | Delete
[255] Fix | Delete
$wp_environments = array(
[256] Fix | Delete
'local',
[257] Fix | Delete
'development',
[258] Fix | Delete
'staging',
[259] Fix | Delete
'production',
[260] Fix | Delete
);
[261] Fix | Delete
[262] Fix | Delete
// Add a note about the deprecated WP_ENVIRONMENT_TYPES constant.
[263] Fix | Delete
if ( defined( 'WP_ENVIRONMENT_TYPES' ) && function_exists( '_deprecated_argument' ) ) {
[264] Fix | Delete
if ( function_exists( '__' ) ) {
[265] Fix | Delete
/* translators: %s: WP_ENVIRONMENT_TYPES */
[266] Fix | Delete
$message = sprintf( __( 'The %s constant is no longer supported.' ), 'WP_ENVIRONMENT_TYPES' );
[267] Fix | Delete
} else {
[268] Fix | Delete
$message = sprintf( 'The %s constant is no longer supported.', 'WP_ENVIRONMENT_TYPES' );
[269] Fix | Delete
}
[270] Fix | Delete
[271] Fix | Delete
_deprecated_argument(
[272] Fix | Delete
'define()',
[273] Fix | Delete
'5.5.1',
[274] Fix | Delete
$message
[275] Fix | Delete
);
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
// Check if the environment variable has been set, if `getenv` is available on the system.
[279] Fix | Delete
if ( function_exists( 'getenv' ) ) {
[280] Fix | Delete
$has_env = getenv( 'WP_ENVIRONMENT_TYPE' );
[281] Fix | Delete
if ( false !== $has_env ) {
[282] Fix | Delete
$current_env = $has_env;
[283] Fix | Delete
}
[284] Fix | Delete
}
[285] Fix | Delete
[286] Fix | Delete
// Fetch the environment from a constant, this overrides the global system variable.
[287] Fix | Delete
if ( defined( 'WP_ENVIRONMENT_TYPE' ) && WP_ENVIRONMENT_TYPE ) {
[288] Fix | Delete
$current_env = WP_ENVIRONMENT_TYPE;
[289] Fix | Delete
}
[290] Fix | Delete
[291] Fix | Delete
// Make sure the environment is an allowed one, and not accidentally set to an invalid value.
[292] Fix | Delete
if ( ! in_array( $current_env, $wp_environments, true ) ) {
[293] Fix | Delete
$current_env = 'production';
[294] Fix | Delete
}
[295] Fix | Delete
[296] Fix | Delete
return $current_env;
[297] Fix | Delete
}
[298] Fix | Delete
[299] Fix | Delete
/**
[300] Fix | Delete
* Retrieves the current development mode.
[301] Fix | Delete
*
[302] Fix | Delete
* The development mode affects how certain parts of the WordPress application behave,
[303] Fix | Delete
* which is relevant when developing for WordPress.
[304] Fix | Delete
*
[305] Fix | Delete
* Development mode can be set via the `WP_DEVELOPMENT_MODE` constant in `wp-config.php`.
[306] Fix | Delete
* Possible values are 'core', 'plugin', 'theme', 'all', or an empty string to disable
[307] Fix | Delete
* development mode. 'all' is a special value to signify that all three development modes
[308] Fix | Delete
* ('core', 'plugin', and 'theme') are enabled.
[309] Fix | Delete
*
[310] Fix | Delete
* Development mode is considered separately from `WP_DEBUG` and wp_get_environment_type().
[311] Fix | Delete
* It does not affect debugging output, but rather functional nuances in WordPress.
[312] Fix | Delete
*
[313] Fix | Delete
* This function retrieves the currently set development mode value. To check whether
[314] Fix | Delete
* a specific development mode is enabled, use wp_is_development_mode().
[315] Fix | Delete
*
[316] Fix | Delete
* @since 6.3.0
[317] Fix | Delete
*
[318] Fix | Delete
* @return string The current development mode.
[319] Fix | Delete
*/
[320] Fix | Delete
function wp_get_development_mode() {
[321] Fix | Delete
static $current_mode = null;
[322] Fix | Delete
[323] Fix | Delete
if ( ! defined( 'WP_RUN_CORE_TESTS' ) && null !== $current_mode ) {
[324] Fix | Delete
return $current_mode;
[325] Fix | Delete
}
[326] Fix | Delete
[327] Fix | Delete
$development_mode = WP_DEVELOPMENT_MODE;
[328] Fix | Delete
[329] Fix | Delete
// Exclusively for core tests, rely on the `$_wp_tests_development_mode` global.
[330] Fix | Delete
if ( defined( 'WP_RUN_CORE_TESTS' ) && isset( $GLOBALS['_wp_tests_development_mode'] ) ) {
[331] Fix | Delete
$development_mode = $GLOBALS['_wp_tests_development_mode'];
[332] Fix | Delete
}
[333] Fix | Delete
[334] Fix | Delete
$valid_modes = array(
[335] Fix | Delete
'core',
[336] Fix | Delete
'plugin',
[337] Fix | Delete
'theme',
[338] Fix | Delete
'all',
[339] Fix | Delete
'',
[340] Fix | Delete
);
[341] Fix | Delete
[342] Fix | Delete
if ( ! in_array( $development_mode, $valid_modes, true ) ) {
[343] Fix | Delete
$development_mode = '';
[344] Fix | Delete
}
[345] Fix | Delete
[346] Fix | Delete
$current_mode = $development_mode;
[347] Fix | Delete
[348] Fix | Delete
return $current_mode;
[349] Fix | Delete
}
[350] Fix | Delete
[351] Fix | Delete
/**
[352] Fix | Delete
* Checks whether the site is in the given development mode.
[353] Fix | Delete
*
[354] Fix | Delete
* @since 6.3.0
[355] Fix | Delete
*
[356] Fix | Delete
* @param string $mode Development mode to check for. Either 'core', 'plugin', 'theme', or 'all'.
[357] Fix | Delete
* @return bool True if the given mode is covered by the current development mode, false otherwise.
[358] Fix | Delete
*/
[359] Fix | Delete
function wp_is_development_mode( $mode ) {
[360] Fix | Delete
$current_mode = wp_get_development_mode();
[361] Fix | Delete
if ( empty( $current_mode ) ) {
[362] Fix | Delete
return false;
[363] Fix | Delete
}
[364] Fix | Delete
[365] Fix | Delete
// Return true if the current mode encompasses all modes.
[366] Fix | Delete
if ( 'all' === $current_mode ) {
[367] Fix | Delete
return true;
[368] Fix | Delete
}
[369] Fix | Delete
[370] Fix | Delete
// Return true if the current mode is the given mode.
[371] Fix | Delete
return $mode === $current_mode;
[372] Fix | Delete
}
[373] Fix | Delete
[374] Fix | Delete
/**
[375] Fix | Delete
* Ensures all of WordPress is not loaded when handling a favicon.ico request.
[376] Fix | Delete
*
[377] Fix | Delete
* Instead, send the headers for a zero-length favicon and bail.
[378] Fix | Delete
*
[379] Fix | Delete
* @since 3.0.0
[380] Fix | Delete
* @deprecated 5.4.0 Deprecated in favor of do_favicon().
[381] Fix | Delete
*/
[382] Fix | Delete
function wp_favicon_request() {
[383] Fix | Delete
if ( '/favicon.ico' === $_SERVER['REQUEST_URI'] ) {
[384] Fix | Delete
header( 'Content-Type: image/vnd.microsoft.icon' );
[385] Fix | Delete
exit;
[386] Fix | Delete
}
[387] Fix | Delete
}
[388] Fix | Delete
[389] Fix | Delete
/**
[390] Fix | Delete
* Dies with a maintenance message when conditions are met.
[391] Fix | Delete
*
[392] Fix | Delete
* The default message can be replaced by using a drop-in (maintenance.php in
[393] Fix | Delete
* the wp-content directory).
[394] Fix | Delete
*
[395] Fix | Delete
* @since 3.0.0
[396] Fix | Delete
* @access private
[397] Fix | Delete
*/
[398] Fix | Delete
function wp_maintenance() {
[399] Fix | Delete
// Return if maintenance mode is disabled.
[400] Fix | Delete
if ( ! wp_is_maintenance_mode() ) {
[401] Fix | Delete
return;
[402] Fix | Delete
}
[403] Fix | Delete
[404] Fix | Delete
if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
[405] Fix | Delete
require_once WP_CONTENT_DIR . '/maintenance.php';
[406] Fix | Delete
die();
[407] Fix | Delete
}
[408] Fix | Delete
[409] Fix | Delete
require_once ABSPATH . WPINC . '/functions.php';
[410] Fix | Delete
wp_load_translations_early();
[411] Fix | Delete
[412] Fix | Delete
header( 'Retry-After: 600' );
[413] Fix | Delete
[414] Fix | Delete
wp_die(
[415] Fix | Delete
__( 'Briefly unavailable for scheduled maintenance. Check back in a minute.' ),
[416] Fix | Delete
__( 'Maintenance' ),
[417] Fix | Delete
503
[418] Fix | Delete
);
[419] Fix | Delete
}
[420] Fix | Delete
[421] Fix | Delete
/**
[422] Fix | Delete
* Checks if maintenance mode is enabled.
[423] Fix | Delete
*
[424] Fix | Delete
* Checks for a file in the WordPress root directory named ".maintenance".
[425] Fix | Delete
* This file will contain the variable $upgrading, set to the time the file
[426] Fix | Delete
* was created. If the file was created less than 10 minutes ago, WordPress
[427] Fix | Delete
* is in maintenance mode.
[428] Fix | Delete
*
[429] Fix | Delete
* @since 5.5.0
[430] Fix | Delete
*
[431] Fix | Delete
* @global int $upgrading The Unix timestamp marking when upgrading WordPress began.
[432] Fix | Delete
*
[433] Fix | Delete
* @return bool True if maintenance mode is enabled, false otherwise.
[434] Fix | Delete
*/
[435] Fix | Delete
function wp_is_maintenance_mode() {
[436] Fix | Delete
global $upgrading;
[437] Fix | Delete
[438] Fix | Delete
if ( ! file_exists( ABSPATH . '.maintenance' ) || wp_installing() ) {
[439] Fix | Delete
return false;
[440] Fix | Delete
}
[441] Fix | Delete
[442] Fix | Delete
require ABSPATH . '.maintenance';
[443] Fix | Delete
[444] Fix | Delete
// If the $upgrading timestamp is older than 10 minutes, consider maintenance over.
[445] Fix | Delete
if ( ( time() - $upgrading ) >= 10 * MINUTE_IN_SECONDS ) {
[446] Fix | Delete
return false;
[447] Fix | Delete
}
[448] Fix | Delete
[449] Fix | Delete
// Don't enable maintenance mode while scraping for fatal errors.
[450] Fix | Delete
if ( is_int( $upgrading ) && isset( $_REQUEST['wp_scrape_key'], $_REQUEST['wp_scrape_nonce'] ) ) {
[451] Fix | Delete
$key = stripslashes( $_REQUEST['wp_scrape_key'] );
[452] Fix | Delete
$nonce = stripslashes( $_REQUEST['wp_scrape_nonce'] );
[453] Fix | Delete
[454] Fix | Delete
if ( md5( $upgrading ) === $key && (int) $nonce === $upgrading ) {
[455] Fix | Delete
return false;
[456] Fix | Delete
}
[457] Fix | Delete
}
[458] Fix | Delete
[459] Fix | Delete
/**
[460] Fix | Delete
* Filters whether to enable maintenance mode.
[461] Fix | Delete
*
[462] Fix | Delete
* This filter runs before it can be used by plugins. It is designed for
[463] Fix | Delete
* non-web runtimes. If this filter returns true, maintenance mode will be
[464] Fix | Delete
* active and the request will end. If false, the request will be allowed to
[465] Fix | Delete
* continue processing even if maintenance mode should be active.
[466] Fix | Delete
*
[467] Fix | Delete
* @since 4.6.0
[468] Fix | Delete
*
[469] Fix | Delete
* @param bool $enable_checks Whether to enable maintenance mode. Default true.
[470] Fix | Delete
* @param int $upgrading The timestamp set in the .maintenance file.
[471] Fix | Delete
*/
[472] Fix | Delete
if ( ! apply_filters( 'enable_maintenance_mode', true, $upgrading ) ) {
[473] Fix | Delete
return false;
[474] Fix | Delete
}
[475] Fix | Delete
[476] Fix | Delete
return true;
[477] Fix | Delete
}
[478] Fix | Delete
[479] Fix | Delete
/**
[480] Fix | Delete
* Gets the time elapsed so far during this PHP script.
[481] Fix | Delete
*
[482] Fix | Delete
* @since 5.8.0
[483] Fix | Delete
*
[484] Fix | Delete
* @return float Seconds since the PHP script started.
[485] Fix | Delete
*/
[486] Fix | Delete
function timer_float() {
[487] Fix | Delete
return microtime( true ) - $_SERVER['REQUEST_TIME_FLOAT'];
[488] Fix | Delete
}
[489] Fix | Delete
[490] Fix | Delete
/**
[491] Fix | Delete
* Starts the WordPress micro-timer.
[492] Fix | Delete
*
[493] Fix | Delete
* @since 0.71
[494] Fix | Delete
* @access private
[495] Fix | Delete
*
[496] Fix | Delete
* @see timer_stop()
[497] Fix | Delete
*
[498] Fix | Delete
* @global float $timestart Unix timestamp set at the beginning of the page load.
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function