web-dev-qa-db-fra.com

Comment obtenir tous les paramètres d'action activate_plugin?

J'essaie de me connecter à activate_plugin.

Je sais que activate_plugin a 1 paramètre requis et 2 en option. J'essaie d'acquérir tous les 3.

Voici ma configuration:

// create plugin settings menu
add_action('admin_menu', 'pe_create_menu');


function pe_create_menu() {

  //create new sub-level menu
  add_submenu_page( 'plugins.php', 'Plugin Settings', 'Plugin Enabler', 'administrator', __FILE__, 'pe_settings_page' );

  // Add my hook
  add_action( 'activate_plugin', 'pe_network_activate', 10, 3 );
}

Et ma fonction:

function pe_network_activate( $plugin, $redirect = '', $network_wide = false ) {
  $args = var_export( func_get_args(), true);
  _log("Args: " . $args); // write to the WP error_log
}

$ args ne renvoie que le premier paramètre. Comment puis-je obtenir tous les 3?

Mon objectif est de pouvoir savoir quand un plugin est activé par le réseau ou simplement activé - d'où la nécessité de $ network_wide.

1
AmberKayle

La fonction activate_plugin() accepte trois paramètres, mais elle émet l'action activate_plugin avec un seul paramètre. Cela peut prêter à confusion, mais les hooks utilisent parfois le même nom que la fonction dont ils proviennent, sans transmettre les mêmes paramètres.

Une façon de faire la différence entre une activation réseau et une activation régulière consiste à surveiller les points d'ancrage update_site_option et update_option. Un seul d'entre eux se déclenchera, en fonction du paramètre $network_wide de activate_plugin().

1
Jan Fabry

Pour quoi avez-vous besoin de var_export()? func_get_args() devrait vous donner un tableau d'arguments.

0
Rarst