WordPress.org

Make WordPress Core

Ticket #37656: 37656.diff

File 37656.diff, 2.9 KB (added by flixos90, 5 years ago)
  • src/wp-admin/includes/plugin.php

     
    589589                         *                           or just the current site. Multisite only. Default is false.
    590590                         */
    591591                        do_action( 'activate_' . $plugin, $network_wide );
     592
     593                        if ( $network_wide ) {
     594                                /**
     595                                 * Fires as a specific plugin is being activated for a network.
     596                                 *
     597                                 * This hook is the "activation" hook used internally by register_activation_hook().
     598                                 * The dynamic portion of the hook name, `$plugin`, refers to the plugin basename.
     599                                 *
     600                                 * If a plugin is silently activated (such as during an update), this hook does not fire.
     601                                 *
     602                                 * @since 4.7.0
     603                                 */
     604                                do_action( 'activate_' . $plugin . '_for_network' );
     605
     606                                if ( has_action( 'activate_' . $plugin . '_for_site' ) && ! wp_is_large_network( 'sites' ) ) {
     607                                        $site_ids = get_sites( array( 'fields' => 'ids', 'network_id' => get_network()->id ) );
     608
     609                                        foreach ( $site_ids as $site_id ) {
     610                                                switch_to_blog( $site_id );
     611
     612                                                /**
     613                                                 * Fires as a specific plugin is being activated for a site.
     614                                                 *
     615                                                 * This hook is the "activation" hook used internally by register_activation_hook().
     616                                                 * The dynamic portion of the hook name, `$plugin`, refers to the plugin basename.
     617                                                 *
     618                                                 * If a plugin is silently activated (such as during an update), this hook does not fire.
     619                                                 *
     620                                                 * @since 4.7.0
     621                                                 */
     622                                                do_action( 'activate_' . $plugin . '_for_site' );
     623
     624                                                restore_current_blog();
     625                                        }
     626                                }
     627                        } else {
     628                                /** This action is documented in wp-admin/includes/plugin.php */
     629                                do_action( 'activate_' . $plugin . '_for_site' );
     630                        }
    592631                }
    593632
    594633                if ( $network_wide ) {
  • src/wp-includes/plugin.php

     
    825825 * 'activate_sample.php'.
    826826 *
    827827 * @since 2.0.0
     828 * @since 4.7.0 The `$context` parameter was added.
    828829 *
    829830 * @param string   $file     The filename of the plugin including the path.
    830831 * @param callable $function The function hooked to the 'activate_PLUGIN' action.
     832 * @param string   $context  Optional. Either 'site', 'network', or empty for an
     833 *                           undefined context.
    831834 */
    832 function register_activation_hook($file, $function) {
     835function register_activation_hook( $file, $function, $context = '' ) {
    833836        $file = plugin_basename($file);
    834         add_action('activate_' . $file, $function);
     837
     838        if ( 'network' === $context ) {
     839                add_action( 'activate_' . $file . '_for_network', $function );
     840        } elseif ( 'site' === $context ) {
     841                add_action( 'activate_' . $file . '_for_site', $function );
     842        } else {
     843                add_action( 'activate_' . $file, $function );
     844        }
    835845}
    836846
    837847/**