Title: wp_get_update_data
Published: April 25, 2014
Last modified: August 20, 2026

---

# wp_get_update_data(): array

## In this article

 * [Return](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#changelog)
 * [User Contributed Notes](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#user-contributed-notes)

[ Back to top](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#wp--skip-link--target)

Collects counts and UI strings for available updates.

## 󠀁[Return](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#return)󠁿

 array Fetched update data.

 * `counts` int[]
 * An array of counts for available plugin, theme, and WordPress updates.
 * `update_title` string
 * Titles of available updates.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#source)󠁿

    ```php
    function wp_get_update_data() {
    	$counts = array(
    		'plugins'      => 0,
    		'themes'       => 0,
    		'wordpress'    => 0,
    		'translations' => 0,
    	);

    	$plugins = current_user_can( 'update_plugins' );

    	if ( $plugins ) {
    		$update_plugins = get_site_transient( 'update_plugins' );

    		if ( ! empty( $update_plugins->response ) ) {
    			$counts['plugins'] = count( $update_plugins->response );
    		}
    	}

    	$themes = current_user_can( 'update_themes' );

    	if ( $themes ) {
    		$update_themes = get_site_transient( 'update_themes' );

    		if ( ! empty( $update_themes->response ) ) {
    			$counts['themes'] = count( $update_themes->response );
    		}
    	}

    	$core = current_user_can( 'update_core' );

    	if ( $core && function_exists( 'get_core_updates' ) ) {
    		$update_wordpress = get_core_updates( array( 'dismissed' => false ) );

    		if ( ! empty( $update_wordpress )
    			&& ! in_array( $update_wordpress[0]->response, array( 'development', 'latest' ), true )
    			&& current_user_can( 'update_core' )
    		) {
    			$counts['wordpress'] = 1;
    		}
    	}

    	if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) {
    		$counts['translations'] = 1;
    	}

    	$counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations'];
    	$titles          = array();

    	if ( $counts['wordpress'] ) {
    		/* translators: %d: Number of available WordPress updates. */
    		$titles['wordpress'] = sprintf( __( '%d WordPress Update' ), $counts['wordpress'] );
    	}

    	if ( $counts['plugins'] ) {
    		/* translators: %d: Number of available plugin updates. */
    		$titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] );
    	}

    	if ( $counts['themes'] ) {
    		/* translators: %d: Number of available theme updates. */
    		$titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] );
    	}

    	if ( $counts['translations'] ) {
    		$titles['translations'] = __( 'Translation Updates' );
    	}

    	$update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : '';

    	$update_data = array(
    		'counts' => $counts,
    		'title'  => $update_title,
    	);
    	/**
    	 * Filters the returned array of update data for plugins, themes, and WordPress core.
    	 *
    	 * @since 3.5.0
    	 *
    	 * @param array $update_data {
    	 *     Fetched update data.
    	 *
    	 *     @type int[]   $counts       An array of counts for available plugin, theme, and WordPress updates.
    	 *     @type string  $update_title Titles of available updates.
    	 * }
    	 * @param array $titles An array of update counts and UI strings for available updates.
    	 */
    	return apply_filters( 'wp_get_update_data', $update_data, $titles );
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/update.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-includes/update.php#L935)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-includes/update.php#L935-L1022)

## 󠀁[Hooks](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#hooks)󠁿

 [apply_filters( ‘wp_get_update_data’, array $update_data, array $titles )](https://developer.wordpress.org/reference/hooks/wp_get_update_data/)

Filters the returned array of update data for plugins, themes, and WordPress core.

## 󠀁[Related](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#related)󠁿

| Uses | Description | 
| [get_core_updates()](https://developer.wordpress.org/reference/functions/get_core_updates/)`wp-admin/includes/update.php` |

Gets available core updates.

  | 
| [_n()](https://developer.wordpress.org/reference/functions/_n/)`wp-includes/l10n.php` |

Translates and retrieves the singular or plural form based on the supplied number.

  | 
| [wp_get_translation_updates()](https://developer.wordpress.org/reference/functions/wp_get_translation_updates/)`wp-includes/update.php` |

Retrieves a list of all language updates available.

  | 
| [current_user_can()](https://developer.wordpress.org/reference/functions/current_user_can/)`wp-includes/capabilities.php` |

Returns whether the current user has the specified capability.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [esc_attr()](https://developer.wordpress.org/reference/functions/esc_attr/)`wp-includes/formatting.php` |

Escaping for HTML attributes.

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  | 
| [get_site_transient()](https://developer.wordpress.org/reference/functions/get_site_transient/)`wp-includes/option.php` |

Retrieves the value of a site transient.

  |

[Show 5 more](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#)

| Used by | Description | 
| [WP_Plugins_List_Table::prepare_items()](https://developer.wordpress.org/reference/classes/wp_plugins_list_table/prepare_items/)`wp-admin/includes/class-wp-plugins-list-table.php` |

Prepares the list of items for displaying.

  | 
| [WP_MS_Themes_List_Table::prepare_items()](https://developer.wordpress.org/reference/classes/wp_ms_themes_list_table/prepare_items/)`wp-admin/includes/class-wp-ms-themes-list-table.php` |

Prepares the themes list for display.

  | 
| [WP_Plugin_Install_List_Table::prepare_items()](https://developer.wordpress.org/reference/classes/wp_plugin_install_list_table/prepare_items/)`wp-admin/includes/class-wp-plugin-install-list-table.php` |  | 
| [WP_Customize_Manager::enqueue_control_scripts()](https://developer.wordpress.org/reference/classes/wp_customize_manager/enqueue_control_scripts/)`wp-includes/class-wp-customize-manager.php` |

Enqueues scripts for customize controls.

  | 
| [wp_admin_bar_updates_menu()](https://developer.wordpress.org/reference/functions/wp_admin_bar_updates_menu/)`wp-includes/admin-bar.php` |

Provides an update link if theme/plugin/core updates are available.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#changelog)󠁿

| Version | Description | 
| [3.3.0](https://developer.wordpress.org/reference/since/3.3.0/) | Introduced. |

## 󠀁[User Contributed Notes](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#user-contributed-notes)󠁿

 1.  [Skip to note 2 content](https://developer.wordpress.org/reference/functions/wp_get_update_data/?output_format=md#comment-content-3292)
 2.   [Matheus Martins](https://profiles.wordpress.org/matheusfd/)  [  7 years ago  ](https://developer.wordpress.org/reference/functions/wp_get_update_data/#comment-3292)
 3. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_get_update_data%2F%23comment-3292)
    Vote results for this note: 0[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_get_update_data%2F%23comment-3292)
 4. The following piece of code is just an example of what is returned by **[wp_get_update_data()](https://developer.wordpress.org/reference/functions/wp_get_update_data/)**.
 5.     ```php
        print_r( wp_get_update_data() );
    
        // Return of wp_get_update_data()
        Array
        (
            [counts] => Array
                (
                    [plugins] => 17
                    [themes] => 5
                    [wordpress] => 1
                    [translations] => 0
                    [total] => 23
                )
    
            [title] => 1 WordPress Update, 17 Plugin Updates, 5 Theme Updates
        )
        ```
    
 6.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_get_update_data%2F%3Freplytocom%3D3292%23feedback-editor-3292)

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_get_update_data%2F)
before being able to contribute a note or feedback.