From 1f608d5d5c8ed295ed22f649088b148bc9ab3dfe Mon Sep 17 00:00:00 2001 From: hellofromTonya Date: Mon, 15 Nov 2021 19:59:03 +0000 Subject: [PATCH] Upgrade/Install: Deactivate the Gutenberg plugin if its version is 11.8 or lower. Avoid a fatal error due to `WP_Theme_JSON_Schema` and potentially other classes and/or functions redeclarations when updating to WordPress 5.9 with an incompatible version of the Gutenberg plugin. This commit uses the same strategy from 5.8. Moves the plugin deactivation code (introduced in [51266]) to a private function for reuse in 5.8, 5.9, and future major releases. Follow-up to [51180], [51266]. Props hellofromTonya, johnbillion, jorbin. See #54405. Built from https://develop.svn.wordpress.org/trunk@52165 git-svn-id: http://core.svn.wordpress.org/trunk@51757 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/update-core.php | 58 +++++++++++++++++++++++-------- wp-includes/version.php | 2 +- 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/wp-admin/includes/update-core.php b/wp-admin/includes/update-core.php index e411b817dc..aa59a71592 100644 --- a/wp-admin/includes/update-core.php +++ b/wp-admin/includes/update-core.php @@ -1401,6 +1401,9 @@ function update_core( $from, $to ) { // Deactivate the Gutenberg plugin if its version is 10.7 or lower. _upgrade_580_force_deactivate_incompatible_plugins(); + // Deactivate the Gutenberg plugin if its version is 11.8 or lower. + _upgrade_590_force_deactivate_incompatible_plugins(); + // Upgrade DB with separate request. /** This filter is documented in wp-admin/includes/update-core.php */ apply_filters( 'update_feedback', __( 'Upgrading database…' ) ); @@ -1685,25 +1688,50 @@ function _upgrade_440_force_deactivate_incompatible_plugins() { } /** + * @access private * @ignore * @since 5.8.0 */ function _upgrade_580_force_deactivate_incompatible_plugins() { if ( defined( 'GUTENBERG_VERSION' ) && version_compare( GUTENBERG_VERSION, '10.7', '<=' ) ) { - $deactivated_gutenberg['gutenberg'] = array( - 'plugin_name' => 'Gutenberg', - 'version_deactivated' => GUTENBERG_VERSION, - 'version_compatible' => '10.8', - ); - if ( is_plugin_active_for_network( 'gutenberg/gutenberg.php' ) ) { - $deactivated_plugins = get_site_option( 'wp_force_deactivated_plugins', array() ); - $deactivated_plugins = array_merge( $deactivated_plugins, $deactivated_gutenberg ); - update_site_option( 'wp_force_deactivated_plugins', $deactivated_plugins ); - } else { - $deactivated_plugins = get_option( 'wp_force_deactivated_plugins', array() ); - $deactivated_plugins = array_merge( $deactivated_plugins, $deactivated_gutenberg ); - update_option( 'wp_force_deactivated_plugins', $deactivated_plugins ); - } - deactivate_plugins( array( 'gutenberg/gutenberg.php' ), true ); + _deactivate_gutenberg_when_incompatible_with_wp( '10.8' ); } } + +/** + * @access private + * @ignore + * @since 5.9.0 + */ +function _upgrade_590_force_deactivate_incompatible_plugins() { + if ( defined( 'GUTENBERG_VERSION' ) && version_compare( GUTENBERG_VERSION, '11.8', '<=' ) ) { + _deactivate_gutenberg_when_incompatible_with_wp( '11.9' ); + } +} + +/** + * Deactivates the Gutenberg plugin when its version is incompatible. + * + * @access private + * @ignore + * @since 5.9.0 + * + * @param string $compatible_version The version of Gutenberg plugin that is compatible. + */ +function _deactivate_gutenberg_when_incompatible_with_wp( $compatible_version ) { + $deactivated_gutenberg['gutenberg'] = array( + 'plugin_name' => 'Gutenberg', + 'version_deactivated' => GUTENBERG_VERSION, + 'version_compatible' => $compatible_version, + ); + if ( is_plugin_active_for_network( 'gutenberg/gutenberg.php' ) ) { + $deactivated_plugins = get_site_option( 'wp_force_deactivated_plugins', array() ); + $deactivated_plugins = array_merge( $deactivated_plugins, $deactivated_gutenberg ); + update_site_option( 'wp_force_deactivated_plugins', $deactivated_plugins ); + } else { + $deactivated_plugins = get_option( 'wp_force_deactivated_plugins', array() ); + $deactivated_plugins = array_merge( $deactivated_plugins, $deactivated_gutenberg ); + update_option( 'wp_force_deactivated_plugins', $deactivated_plugins ); + } + deactivate_plugins( array( 'gutenberg/gutenberg.php' ), true ); +} diff --git a/wp-includes/version.php b/wp-includes/version.php index eabe59c1b6..00795b0b88 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '5.9-alpha-52164'; +$wp_version = '5.9-alpha-52165'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.