WordPress shows I have 1 plugin update, when all plugins are already updated

WordPress shows that I have 1 plugin update, when all of my plugins are updated. Below is a screenshot so you can see what I’m talking about:

Read More

Now, I’ve tried several things, including reinstalling WP, and deleting the transients using Artiss Transient Cleaner, yet nothing seems to work. Any ideas on what could possibly be causing this rogue/ghost “plugin” to be requesting an update when there is none?

Related posts

Leave a Reply

8 comments

  1. I see this from time to time with premium plugins and themes that require an activation key. The WP UI won’t provide anyway to update the plugin or theme, but you’ll see the pending update count number in the UI.

    To track down the source I use the following function:

    /**
     * Debug Pending Updates
     *
     * Crude debugging method that will spit out all pending plugin
     * and theme updates for admin level users when ?debug_updates is
     * added to a /wp-admin/ URL.
     */
    function debug_pending_updates() {
    
        // Rough safety nets
        if ( ! is_user_logged_in() || ! current_user_can( 'manage_options' ) ) return;
        if ( ! isset( $_GET['debug_updates'] ) ) return;
    
        $output = "";
    
        // Check plugins
        $plugin_updates = get_site_transient( 'update_plugins' );
        if ( $plugin_updates && ! empty( $plugin_updates->response ) ) {
            foreach ( $plugin_updates->response as $plugin => $details ) {
                $output .= "<p><strong>Plugin</strong> <u>$plugin</u> is reporting an available update.</p>";
            }
        }
    
        // Check themes
        wp_update_themes();
        $theme_updates = get_site_transient( 'update_themes' );
        if ( $theme_updates && ! empty( $theme_updates->response ) ) {
            foreach ( $theme_updates->response as $theme => $details ) {
                $output .= "<p><strong>Theme</strong> <u>$theme</u> is reporting an available update.</p>";
            }
        }
    
        if ( empty( $output ) ) $output = "No pending updates found in the database.";
    
        wp_die( $output );
    }
    add_action( 'init', 'debug_pending_updates' );
    

    Add that to your theme’s functions.php file then visit a page with ?debug_updates added to the URL. For example: yourdomain.example/wp-admin/?debug_updates. This should show you any theme or plugin that’s causing the issue.

  2. I had this issue, and it was that a new translation was available (which is not obvious from the Updates page, you have to go into Update Translations at the bottom);

    enter image description here

    after updating the transations… the warning was gone;

    enter image description here

  3. Slightly modified version of Kevin’s answer that doesn’t require adding parameters to URL. It simply hooks into update-core right after Plugins, Themes and Translations and displays the list of updates.

    /**
     * Debug Pending Updates
     *
     * Displays hidden plugin and theme updates on update-core screen.
     */
    function debug_pending_updates() {
    
      // Rough safety nets
      if ( ! is_user_logged_in() || ! current_user_can( 'update_plugins' ) || ! current_user_can( 'update_themes' ) ) return;
    
      $output = "";
    
      // Check plugins
      $plugin_updates = get_site_transient( 'update_plugins' );
      if ( $plugin_updates && ! empty( $plugin_updates->response ) ) {
        foreach ( $plugin_updates->response as $plugin => $details ) {
          $output .= "<p><strong>Plugin</strong> <u>$plugin</u> is reporting an available update.</p>";
        }
      }
    
      // Check themes
      wp_update_themes();
      $theme_updates = get_site_transient( 'update_themes' );
      if ( $theme_updates && ! empty( $theme_updates->response ) ) {
        foreach ( $theme_updates->response as $theme => $details ) {
          $output .= "<p><strong>Theme</strong> <u>$theme</u> is reporting an available update.</p>";
        }
      }
    
      if ( empty( $output ) ) $output = "No pending updates found in the database.";
    
      echo "<h2>Pending updates</h2>" . $output;
    }
    add_action( 'core_upgrade_preamble', 'debug_pending_updates' );
    
  4. most of the times it’s happening with premium plugins. so Deactivate plugins one by one until notification disappear and reactive again. then problem will solve.

  5. I’ve had the same problem in a WordPress 5.0.1 installation.
    In my case it has been the Formidable Premium pluging which causes this.
    The formidable support team sent also a message, because things have changed on there side, here is their message:

    Hi ,
    
    As some of you may know, we updated the licensing software on our
    site a few months ago. This meant we had to move all of the
    licensing information to a new format. Unfortunately, this caused
    some of the custom site limits to be reduced for add-ons that
    weren’t bundled with a grandfathered license. 
    
    We had a few people understandably ask us about this. Our solution
    was that they could manually upgrade to a bundle, which would solve
    the problem.  
    
    However, over the last month we were made aware that some people
    were upset with the reduction in limits, but hadn’t contacted us
    about it.  
    
    As a result, we set to work and moved everyone with a Business or
    Enterprise license over to a bundle that would automatically correct
    the issue.  
    
    I want to take this opportunity to apologize for the trouble we may
    have caused, and that we didn’t realize sooner that so many people
    had been negatively affected. I would also like to reassure you that
    we never intend to remove a grandfathered benefit from your account.
    
    
    I hope you were not among the group that lost faith in us over this
    issue. While we will always aim to resolve issues as soon as they
    occur, we would ask that if you ever run into another problem, that
    you contact us about it first. That way, we can rectify the problem
    and reduce the trouble it causes you.
    

    So it might be very often in case a plugin is changing the way to accès to the api of the developper.

    Best Regards,
    Norbert

  6. If you have FTP access, look in the plugins folder and make sure that you have X number, which matches with the ones showing up in WordPress. Maybe you have one which is broken, so it’s still in detecting it but it’s not properly formatting it so it’s not showing in WordPress.

    If you don’t have FTP access you can still see the files by going to Plugins>Editor and looking at the dropdown in the upper right hand corner.