From 57a5164cbd447769b49577bd77d596cc9ec4a58c Mon Sep 17 00:00:00 2001 From: Felix Arntz Date: Mon, 4 Dec 2023 19:49:18 +0000 Subject: [PATCH] Themes: Clean up inactive themes' theme mods from being autoloaded as part of upcoming 6.5 upgrade routine. Alongside [57153], this reduces unnecessarily autoloaded data from inactive themes, which can contribute to slow database performance as part of excessive autoloading. This changeset specifically resolves the issue for existing sites. Props mukesh27, joemcgill, swissspidy, westonruter, flixos90. Fixes #59975. See #39537. git-svn-id: https://develop.svn.wordpress.org/trunk@57155 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/upgrade.php | 33 +++++++++++++++++++++++++++++++ src/wp-includes/version.php | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/wp-admin/includes/upgrade.php b/src/wp-admin/includes/upgrade.php index 705539571eb95..cb3939108b856 100644 --- a/src/wp-admin/includes/upgrade.php +++ b/src/wp-admin/includes/upgrade.php @@ -843,6 +843,10 @@ function upgrade_all() { upgrade_640(); } + if ( $wp_current_db_version < 57155 ) { + upgrade_650(); + } + maybe_disable_link_manager(); maybe_disable_automattic_widgets(); @@ -2349,6 +2353,35 @@ function upgrade_640() { } } +/** + * Executes changes made in WordPress 6.5.0. + * + * @ignore + * @since 6.5.0 + * + * @global int $wp_current_db_version The old (current) database version. + * @global wpdb $wpdb WordPress database abstraction object. + */ +function upgrade_650() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 57155 ) { + $stylesheet = get_stylesheet(); + + // Set autoload=no for all themes except the current one. + $theme_mods_options = $wpdb->get_col( + $wpdb->prepare( + "SELECT option_name FROM $wpdb->options WHERE autoload = 'yes' AND option_name != %s AND option_name LIKE %s", + "theme_mods_$stylesheet", + $wpdb->esc_like( 'theme_mods_' ) . '%' + ) + ); + + $autoload = array_fill_keys( $theme_mods_options, 'no' ); + wp_set_option_autoload_values( $autoload ); + } +} + /** * Executes network-level upgrade routines. * diff --git a/src/wp-includes/version.php b/src/wp-includes/version.php index 741a527c5e433..ecd665df63648 100644 --- a/src/wp-includes/version.php +++ b/src/wp-includes/version.php @@ -23,7 +23,7 @@ * * @global int $wp_db_version */ -$wp_db_version = 56657; +$wp_db_version = 57155; /** * Holds the TinyMCE version.