[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