Wie man in WordPress-Upgrade-Verfahren für ein benutzerdefiniertes Thema einhakt

Ich versuche, eine benutzerdefinierte Theme-Upgrade-Prozedur zu erstellen, die Dateien selektiv überschreibt und die alten in meinem benutzerdefinierten Theme sichert, anstatt sie wie WordPress zu löschen und zu überschreiben.

Ich habe pre_set_site_transient_update_themes an pre_set_site_transient_update_themes , um nach Updates von unserem Server zu pre_set_site_transient_update_themes , die Update-Benachrichtigung pre_set_site_transient_update_themes und es wordpress zu erlauben, die neuen Dateien herunterzuladen – aber ich pre_set_site_transient_update_themes , wie ich beeinflussen kann, wie das Upgrade durchgeführt wird.

Gibt es einen Haken oder einen Filter, den ich verwenden kann, der meinem Code erlaubt, das Upgrade statt WordPress durchzuführen?

Bitte beachten Sie, dass, obwohl ich lieber untergeordnete Themen verwenden und stattdessen das übergeordnete Thema aktualisieren möchte, was wirklich die richtige Lösung ist, kann ich in diesem Fall nicht.

Solutions Collecting From Web of "Wie man in WordPress-Upgrade-Verfahren für ein benutzerdefiniertes Thema einhakt"

Hast du im classn-Theme-Upgrader nach Hooks gesucht?

 File: wp-admin/includes/class-theme-upgrader.php 233: /** 234: * Upgrade a theme. 235: * 236: * @since 2.8.0 237: * @since 3.7.0 The `$args` parameter was added, making clearing the update cache optional. 238: * @access public 239: * 240: * @param string $theme The theme slug. 241: * @param array $args { 242: * Optional. Other arguments for upgrading a theme. Default empty array. 243: * 244: * @type bool $clear_update_cache Whether to clear the update cache if successful. 245: * Default true. 246: * } 247: * @return bool|WP_Error True if the upgrade was successful, false or a WP_Error object otherwise. 248: */ 249: public function upgrade( $theme, $args = array() ) { 250: 251: $defaults = array( 252: 'clear_update_cache' => true, 253: ); 254: $parsed_args = wp_parse_args( $args, $defaults ); 255: 256: $this->init(); 257: $this->upgrade_strings(); 258: 259: // Is an update available? 260: $current = get_site_transient( 'update_themes' ); 261: if ( !isset( $current->response[ $theme ] ) ) { 262: $this->skin->before(); 263: $this->skin->set_result(false); 264: $this->skin->error( 'up_to_date' ); 265: $this->skin->after(); 266: return false; 267: } 268: 269: $r = $current->response[ $theme ]; 270: 271: add_filter('upgrader_pre_install', array($this, 'current_before'), 10, 2); 272: add_filter('upgrader_post_install', array($this, 'current_after'), 10, 2); 273: add_filter('upgrader_clear_destination', array($this, 'delete_old_theme'), 10, 4); 274: if ( $parsed_args['clear_update_cache'] ) { 275: // Clear cache so wp_update_themes() knows about the new theme. 276: add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 ); 277: } 278: 279: $this->run( array( 280: 'package' => $r['package'], 281: 'destination' => get_theme_root( $theme ), 282: 'clear_destination' => true, 283: 'clear_working' => true, 284: 'hook_extra' => array( 285: 'theme' => $theme, 286: 'type' => 'theme', 287: 'action' => 'update', 288: ), 289: ) ); 290: 291: remove_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9 ); 292: remove_filter('upgrader_pre_install', array($this, 'current_before')); 293: remove_filter('upgrader_post_install', array($this, 'current_after')); 294: remove_filter('upgrader_clear_destination', array($this, 'delete_old_theme')); 295: 296: if ( ! $this->result || is_wp_error($this->result) ) 297: return $this->result; 298: 299: wp_clean_themes_cache( $parsed_args['clear_update_cache'] ); 300: 301: return true; 302: }