Votre fonction de rappel devrait fonctionner lorsque votre plugin est activé par le réseau ou activé pour un seul site. Quoi qu'il en soit, cela devrait fonctionner.
Cependant, si vous avez l'intention d'exécuter le code contenu dans votre rappel pour chaque blog de votre réseau, sachez que cela ne se produira pas immédiatement, le code dans votre rappel sera dans le contexte du blog principal.
Si votre code doit être exécuté sur chaque blog lors de l'activation du réseau:
function my_plugin_activate($network_wide) {
if ( is_multisite() && $network_wide ) {
global $wpdb;
foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
switch_to_blog($blog_id);
//do your specific thing here...
restore_current_blog();
}
} else {
//run in single site context
}
}
register_activation_hook( __FILE__, 'my_plugin_activate' );
Si votre code doit être exécuté lors de la création d'un nouveau blog:
function my_plugin_new_blog($blog_id, $user_id, $domain, $path, $site_id, $meta) {
//replace with your base plugin path E.g. dirname/filename.php
if ( is_plugin_active_for_network( 'my-plugin-name-dir/my-plugin-name.php' ) ) {
switch_to_blog($blog_id);
//do your specific thing here...
restore_current_blog();
}
}
add_action('wpmu_new_blog', 'my_plugin_new_blog', 10, 6 );
Aditionellement:
Pour ceux qui lisent qui veulent des fonctionnalités similaires mais pour tous les plugins qui sont activés sur le réseau (pas seulement celui que vous contrôlez, le cas échéant) , vous pouvez consulter: https://wordpress.org/plugins/proper-network -activation / qui garantira que chaque plugin de votre réseau multisite dans lequel est activé le réseau, a son register_activation_hook
et register_deactivation_hook
s'exécute dans chaque contexte de blog.