[wp-trac] [WordPress Trac] #64550: wp_update_plugins function (possibly wp_update_themes) breaks when the transient setting fails
WordPress Trac
noreply at wordpress.org
Mon Jan 26 13:13:11 UTC 2026
#64550: wp_update_plugins function (possibly wp_update_themes) breaks when the
transient setting fails
--------------------------+------------------------------
Reporter: madhazelnut | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: General | Version: 6.8.3
Severity: major | Resolution:
Keywords: | Focuses:
--------------------------+------------------------------
Comment (by siliconforks):
Here's a simple plugin which demonstrates the issue.
{{{#!php
<?php
/*
Plugin Name: Destroy All Plugin Updates
Description: This plugin might completely prevent you from getting any
plugin updates. DO NOT INSTALL THIS ON A PRODUCTION SERVER!
Version: 0.1
Update URI: https://example.test/destroy-all-plugin-updates/update
*/
add_filter(
'update_plugins_example.test',
static function ( $update, $plugin_data, $plugin_file, $locales )
{
$update = [
'slug' => 'destroy-all-plugin-updates',
'version' => '0.2',
'url' => 'https://example.test/destroy-all-plugin-
updates/details',
// This is U+1F680 ROCKET
'foobar' => "\xf0\x9f\x9a\x80",
];
return $update;
},
10,
4
);
}}}
To test the above plugin:
1. You will need a `utf8` database to test this - if your database is
`utf8mb4`, you could simply change your `wp_options.option_value` column
for testing purposes (note that this may destroy some Unicode characters
in your database - do not try this on a production site):
{{{
ALTER TABLE wp_options MODIFY COLUMN option_value LONGTEXT CHARSET utf8
NOT NULL;
}}}
2. Install an old version of some plugin - for example, Classic Editor
1.6.6.
3. Log in to the admin section and visit the "Plugins" page. You should
see "There is a new version of Classic Editor available. View version
1.6.7 details or update now."
4. Install the above "Destroy All Plugin Updates" plugin in `wp-
content/plugins/destroy-all-plugin-updates/destroy-all-plugin-
updates.php`. Activate the plugin.
5. Delete the old `update_plugins` transient. You can do this with WP-
CLI:
{{{
wp transient delete --network update_plugins
}}}
6. Now visit the "Plugins" page again. You should see there is no update
available for Classic Editor (or any other plugin).
7. Deactivate the "Destroy All Plugin Updates" plugin. You should start
getting updates again.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/64550#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list