Skip to content

Commit

Permalink
Themes: Clean up inactive themes' theme mods from being autoloaded as…
Browse files Browse the repository at this point in the history
… 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
  • Loading branch information
felixarntz committed Dec 4, 2023
1 parent 7ce1281 commit 57a5164
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
33 changes: 33 additions & 0 deletions src/wp-admin/includes/upgrade.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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.
*
Expand Down
2 changes: 1 addition & 1 deletion src/wp-includes/version.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*
* @global int $wp_db_version
*/
$wp_db_version = 56657;
$wp_db_version = 57155;

/**
* Holds the TinyMCE version.
Expand Down

0 comments on commit 57a5164

Please sign in to comment.