Occasionally, WordPress Updates will indicate that there are one or more pending updates available for plugins or themes with the number in the badge. However, when visiting the WordPress Updates core page, or Plugins page, or Themes page, no updates are available nor show up in the list, and WordPress shows that all plugins and/or themes are up to date.

WordPress Indicates Updates Available When All Updated

One of the possible reason for the issue is that new translations are available for update, which may be missed unintentionally. Update Translations will make the issue and warning goes away.

WordPress Translations Update

However, the pending updates available count shown but WordPress is not showing them issue is usually caused by commercial or premium plugins and themes that you’re using on the WordPress, most of which requires activation key and makes use of other plugins to enhance the functionality. When one or more of the embedded plugins used internally by these third-party premium plugins have updates, WordPress can detect them but won’t show the updates as these sub-level plugins as they are not plugins or themes that are directly installed on the top level and managed by WordPress.

WordPress does not provide an easy way to determine exactly which plugins or themes that have hidden updates. As such, to determine which plugin or theme is the culprit, you need to look at the database which provides WordPress such information.

WordPress saves the updates information on wp_options table (prefix wp_ may be different depending on your setup) in options named _site_transient_update_plugins and _site_transient_update_themes. Use phpMyAdmin or other tool to browse the database to look for the specific rows in option_name. If there are updates available, there should be values for the following string near the beginning of the option value in option_value column:

s:8:"response";a:1:{

The response indicates that updates exist, and the text following the response lists out all the updates that are detected by WordPress, including those plugins used by premium themes or plugins.

Or you can’t or not comfortable to access the database directly, you can use the following function by moped. Add the following function to your active theme’s functions.php file, and then visit the WordPress Update Core page (…/wp-admin/update-core.php) to view the list of hidden updates right after Plugins, Themes and Translations.

/**
 * 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>Plugin <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>Theme <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' );>

Hidden Plugin Updates

Once the plugins or themes that caused the pending updates available and count issue are identified, you can proceed to update them from WordPress Plugins management page or the premium plugins’ or themes’ plugins management page.

If for some reasons such as no activation key or no purchase code available, and you cannot update the plugins, try to deactivate and then reactivate the plugins. It should remove the pending updates count, though the count may be coming back when WordPress checks for update again.