Theme_Upgrader::upgrade() WordPress Method
The Theme_Upgrader::upgrade() method is used to upgrade a theme. This method takes two parameters: the theme to upgrade and the version to upgrade to. The theme is upgraded by first checking if the new version is available, and then download it. If the theme is not available or the version is not specified, the latest version is downloaded.
Theme_Upgrader::upgrade( string $theme, array $args = array() ) #
Upgrade a theme.
Parameters
- $theme
(string)(Required)The theme slug.
- $args
(array)(Optional)Other arguments for upgrading a theme.
- 'clear_update_cache'
(bool) Whether to clear the update cache if successful. Default true.
Default value: array()
- 'clear_update_cache'
Return
(bool|WP_Error) True if the upgrade was successful, false or a WP_Error object otherwise.
Source
File: wp-admin/includes/class-theme-upgrader.php
public function upgrade( $theme, $args = array() ) { $defaults = array( 'clear_update_cache' => true, ); $parsed_args = wp_parse_args( $args, $defaults ); $this->init(); $this->upgrade_strings(); // Is an update available? $current = get_site_transient( 'update_themes' ); if ( ! isset( $current->response[ $theme ] ) ) { $this->skin->before(); $this->skin->set_result( false ); $this->skin->error( 'up_to_date' ); $this->skin->after(); return false; } $r = $current->response[ $theme ]; add_filter( 'upgrader_pre_install', array( $this, 'current_before' ), 10, 2 ); add_filter( 'upgrader_post_install', array( $this, 'current_after' ), 10, 2 ); add_filter( 'upgrader_clear_destination', array( $this, 'delete_old_theme' ), 10, 4 ); if ( $parsed_args['clear_update_cache'] ) { // Clear cache so wp_update_themes() knows about the new theme. add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 ); } $this->run( array( 'package' => $r['package'], 'destination' => get_theme_root( $theme ), 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array( 'theme' => $theme, 'type' => 'theme', 'action' => 'update', ), ) ); remove_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9 ); remove_filter( 'upgrader_pre_install', array( $this, 'current_before' ) ); remove_filter( 'upgrader_post_install', array( $this, 'current_after' ) ); remove_filter( 'upgrader_clear_destination', array( $this, 'delete_old_theme' ) ); if ( ! $this->result || is_wp_error( $this->result ) ) { return $this->result; } wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); // Ensure any future auto-update failures trigger a failure email by removing // the last failure notification from the list when themes update successfully. $past_failure_emails = get_option( 'auto_plugin_theme_update_emails', array() ); if ( isset( $past_failure_emails[ $theme ] ) ) { unset( $past_failure_emails[ $theme ] ); update_option( 'auto_plugin_theme_update_emails', $past_failure_emails ); } return true; }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
3.7.0 | The $args parameter was added, making clearing the update cache optional. |
2.8.0 | Introduced. |