Title: wp_upgrade
Published: April 25, 2014
Last modified: April 28, 2025

---

# wp_upgrade()

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/wp_upgrade/?output_format=md#description)
 * [Source](https://developer.wordpress.org/reference/functions/wp_upgrade/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/functions/wp_upgrade/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/functions/wp_upgrade/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/wp_upgrade/?output_format=md#changelog)

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

Runs WordPress Upgrade functions.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/wp_upgrade/?output_format=md#description)󠁿

Upgrades the database if needed during a site update.

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

    ```php
    function wp_upgrade() {
    	global $wp_current_db_version, $wp_db_version;

    	$wp_current_db_version = (int) __get_option( 'db_version' );

    	// We are up to date. Nothing to do.
    	if ( $wp_db_version === $wp_current_db_version ) {
    		return;
    	}

    	if ( ! is_blog_installed() ) {
    		return;
    	}

    	wp_check_mysql_version();
    	wp_cache_flush();
    	pre_schema_upgrade();
    	make_db_current_silent();
    	upgrade_all();
    	if ( is_multisite() && is_main_site() ) {
    		upgrade_network();
    	}
    	wp_cache_flush();

    	if ( is_multisite() ) {
    		update_site_meta( get_current_blog_id(), 'db_version', $wp_db_version );
    		update_site_meta( get_current_blog_id(), 'db_last_updated', microtime() );
    	}

    	delete_transient( 'wp_core_block_css_files' );

    	/**
    	 * Fires after a site is fully upgraded.
    	 *
    	 * @since 3.9.0
    	 *
    	 * @param int $wp_db_version         The new $wp_db_version.
    	 * @param int $wp_current_db_version The old (current) $wp_db_version.
    	 */
    	do_action( 'wp_upgrade', $wp_db_version, $wp_current_db_version );
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/upgrade.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-admin/includes/upgrade.php#L660)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-admin/includes/upgrade.php#L660-L700)

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

 [do_action( ‘wp_upgrade’, int $wp_db_version, int $wp_current_db_version )](https://developer.wordpress.org/reference/hooks/wp_upgrade/)

Fires after a site is fully upgraded.

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

| Uses | Description | 
| [update_site_meta()](https://developer.wordpress.org/reference/functions/update_site_meta/)`wp-includes/ms-site.php` |

Updates metadata for a site.

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

Checks the version of the installed MySQL binary.

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

Runs before the schema is upgraded.

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

Updates the database tables to a new schema, but without displaying results.

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

Executes network-level upgrade routines.

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

Removes all cache items.

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

Determines whether a site is the main site of the current network.

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

Determines whether WordPress is already installed.

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

Deletes a transient.

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

Determines whether Multisite is enabled.

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

Retrieves the current site ID.

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

Calls the callback functions that have been added to an action hook.

  |

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

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

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

## User Contributed Notes

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