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.

Built from https://develop.svn.wordpress.org/trunk@57155


git-svn-id: http://core.svn.wordpress.org/trunk@56666 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Felix Arntz 2023-12-04 19:51:23 +00:00
parent 3a961371dc
commit 04152c0b91
2 changed files with 35 additions and 2 deletions

View File

@ -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.
*

View File

@ -16,14 +16,14 @@
*
* @global string $wp_version
*/
$wp_version = '6.5-alpha-57153';
$wp_version = '6.5-alpha-57155';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
*
* @global int $wp_db_version
*/
$wp_db_version = 56657;
$wp_db_version = 57155;
/**
* Holds the TinyMCE version.