mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-04-01 03:04:34 +00:00
General: Introduce WP_DEVELOPMENT_MODE constant to signify context-specific development mode.
In recent releases, WordPress core added several instances of cache usage around specific files. While those caches are safe to use in a production context, in development certain nuances apply for whether or not those caches make sense to use. Initially, `WP_DEBUG` was used as a temporary workaround, but it was clear that a more granular method to signify a specific development mode was required: For example, caches around `theme.json` should be disabled when working on a theme as otherwise it would disrupt the theme developer's workflow, but when working on a plugin or WordPress core, this consideration does not apply. This changeset introduces a `WP_DEVELOPMENT_MODE` constant which, for now, can be set to either "core", "plugin", "theme", or an empty string, the latter of which means no development mode, which is also the default. A new function `wp_get_development_mode()` is the recommended way to retrieve that configuration value. With the new function available, this changeset replaces all existing instances of the aforementioned `WP_DEBUG` workaround to use `wp_get_development_mode()` with a more specific check. Props azaozz, sergeybiryukov, peterwilsoncc, spacedmonkey. Fixes #57487. git-svn-id: https://develop.svn.wordpress.org/trunk@56042 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -261,6 +261,50 @@ function wp_get_environment_type() {
|
||||
return $current_env;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current development mode.
|
||||
*
|
||||
* The development mode affects how certain parts of the WordPress application behave, which is relevant when
|
||||
* developing for WordPress.
|
||||
*
|
||||
* Valid developer modes are 'core', 'plugin', 'theme', or an empty string to disable developer mode.
|
||||
*
|
||||
* Developer mode is considered separately from `WP_DEBUG` and {@see wp_get_environment_type()}. It does not affect
|
||||
* debugging output, but rather functional nuances in WordPress.
|
||||
*
|
||||
* @since 6.3.0
|
||||
*
|
||||
* @return string The current development mode.
|
||||
*/
|
||||
function wp_get_development_mode() {
|
||||
static $current_mode = null;
|
||||
|
||||
if ( ! defined( 'WP_RUN_CORE_TESTS' ) && null !== $current_mode ) {
|
||||
return $current_mode;
|
||||
}
|
||||
|
||||
$development_mode = WP_DEVELOPMENT_MODE;
|
||||
|
||||
// Exclusively for core tests, rely on a global `$_wp_tests_development_mode`.
|
||||
if ( defined( 'WP_RUN_CORE_TESTS' ) && isset( $GLOBALS['_wp_tests_development_mode'] ) ) {
|
||||
$development_mode = $GLOBALS['_wp_tests_development_mode'];
|
||||
}
|
||||
|
||||
$valid_modes = array(
|
||||
'core',
|
||||
'plugin',
|
||||
'theme',
|
||||
'',
|
||||
);
|
||||
if ( ! in_array( $development_mode, $valid_modes, true ) ) {
|
||||
$development_mode = '';
|
||||
}
|
||||
|
||||
$current_mode = $development_mode;
|
||||
|
||||
return $current_mode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't load all of WordPress when handling a favicon.ico request.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user