Wie man 2 ähnliche functionen effizienter macht

Ich habe 2 functionen, die sehr ähnlich sind, eine für den Plugin-Upgrade-process, eine für den Plugin-process aktivieren – ich habe die beiden so, wenn der Benutzer entweder über das WordPress-Dashboard aktualisiert oder das Plugin vollständig löscht oder überschreibt, werden die functionen ausgetriggers . Sie funktionieren gut und ich rufe die Datei, die sie enthält, unter Verwendung einer Bedingung, so dass sie nur für jeden ausgeführt wird, der von einer früheren Version meines Plugins upgradet.

Meine Frage ist: Wie kann ich diese effizienter machen?

Sie funktionieren, aber ich habe das Gefühl, dass dieser Code nicht wiederholt werden muss und der Inhalt jeder function gleich ist.

/** * Update plugin settings on activate */ function prefix_plugin_activate() { $new_option = array( 'new_setting' => 'on' ); $existing_settings = get_option( 'existing_settings' ); $new_settings = array_merge( $new_option, $existing_settings ); update_option( 'existing_settings', $new_settings ); } // register_activation_hook( __FILE__, 'prefix_plugin_activate' ); register_activation_hook( PREFIX_PLUGIN_PATH . 'main-plugin-file.php', 'prefix_plugin_activate' ); /** * Update plugin settings on upgrade */ function prefix_plugin_upgrade( $upgrader_object, $options ) { $new_option = array( 'new_setting' => 'on' ); $existing_settings = get_option( 'existing_settings' ); $new_settings = array_merge( $new_option, $existing_settings ); update_option( 'existing_settings', $new_settings ); } add_action( 'upgrader_process_complete', 'prefix_plugin_upgrade',10, 2); 

Solutions Collecting From Web of "Wie man 2 ähnliche functionen effizienter macht"

Sie haben die Parameter $upgrader_object und $options an prefix_plugin_upgrade function prefix_plugin_upgrade . Aber Sie verwenden diese Parameter nicht wirklich innerhalb der function. So können Sie diese functionen wie unten zusammenführen

 /** * Update plugin settings on activate * Update plugin settings on upgrade */ function prefix_plugin_activate() { $new_option = array( 'new_setting' => 'on' ); $existing_settings = get_option( 'existing_settings' ); $new_settings = array_merge( $new_option, $existing_settings ); update_option( 'existing_settings', $new_settings ); } // register_activation_hook( __FILE__, 'prefix_plugin_activate' ); register_activation_hook( PREFIX_PLUGIN_PATH . 'main-plugin-file.php', 'prefix_plugin_activate' ); add_action( 'upgrader_process_complete', 'prefix_plugin_activate', 10, 2); 

Ich hoffe, das wird mir helfen.