From 7fe2161b1422199b94acfdadcbf1846afe844b18 Mon Sep 17 00:00:00 2001 From: hellofromtonya Date: Tue, 6 Feb 2024 13:26:37 -0600 Subject: [PATCH] Introduces a function to get the min compat version. Introduces _get_plugin_wp_min_compatible_version(). By providing a global function, for-core plugins, such as Gutenberg, can use it to check the minimum compatible version. It provides a more foolproof way for the plugin to handle its response. --- src/wp-includes/load.php | 24 ++++++++++++++++++++++++ src/wp-settings.php | 30 +++--------------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/wp-includes/load.php b/src/wp-includes/load.php index 6c28453b216d3..4880defd5a3c9 100644 --- a/src/wp-includes/load.php +++ b/src/wp-includes/load.php @@ -919,6 +919,30 @@ function wp_not_installed() { die(); } +/** + * Gets the for-core plugin's minimum compatible version. + * + * @since 6.5.0 + * @access private + * + * @param string $plugin Plugin path relative to the plugins' directory. + * @return string Returns the minimum version on success, otherwise an empty string. + */ +function _get_plugin_wp_min_compatible_version( $plugin ) { + static $plugin_data = array( + 'gutenberg/gutenberg.php' => array( + 'name' => 'Gutenberg', + 'minimum_compatible_version' => '17.7', + ), + ); + + if ( ! isset( $plugin_data[ $plugin ] ) ) { + return ''; + } + + return $plugin_data[ $plugin ]['minimum_compatible_version']; +} + /** * Retrieves an array of must-use plugin files. * diff --git a/src/wp-settings.php b/src/wp-settings.php index 9e949e29a9bfd..fffe796fb3b72 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -430,29 +430,6 @@ */ global $_found_incompatible_for_core_plugins, $_is_plugin_compatible_with_wp, $_handle_incompatible_for_core_plugins; -/** - * Gets the for-core plugin's minimum compatible version. - * - * @since 6.5.0 - * - * @param string $plugin Plugin path relative to the plugins' directory. - * @return string Returns the minimum version if it's a for-core plugin, otherwise an empty string. - */ -function _get_for_core_plugin_min_wp_compat_version( $plugin ) { - static $plugin_data = array( - 'gutenberg/gutenberg.php' => array( - 'name' => 'Gutenberg', - 'minimum_compatible_version' => '17.7', - ), - ); - - if ( ! isset( $plugin_data[ $plugin ] ) ) { - return ''; - } - - return $plugin_data[ $plugin ]['minimum_compatible_version']; -} - // Found incompatible for-core plugins. $_found_incompatible_for_core_plugins = array(); @@ -477,7 +454,8 @@ function _get_for_core_plugin_min_wp_compat_version( $plugin ) { $plugin = substr( $plugin_absolute_path, $plugins_dir_strlen ); // Not a for-core plugin. - if ( ! isset( $_wp_for_core_plugins_compat_version[ $plugin ] ) ) { + $min_compat_version = _get_plugin_wp_min_compatible_version( $plugin ); + if ( ! $min_compat_version ) { return true; } @@ -502,8 +480,7 @@ function _get_for_core_plugin_min_wp_compat_version( $plugin ) { return true; } - // If compatible, bail out. - $min_compat_version = $_wp_for_core_plugins_compat_version[ $plugin ]['minimum_compatible_version']; + // Plugin is compatible. if ( version_compare( $plugin_data['Version'], $min_compat_version, '>=' ) ) { return true; } @@ -665,7 +642,6 @@ function _get_for_core_plugin_min_wp_compat_version( $plugin ) { $plugin, $_wp_plugin_file, // Remove the for-core compatibility handler. - $_wp_for_core_plugins_compat_version, $_wp_activated_plugins_to_compat_check, $_is_plugin_compatible_with_wp, $_handle_incompatible_for_core_plugins