La funzione di richiamata dovrebbe essere eseguita quando il plug-in è attivato o attivato in rete per un singolo sito. Ad ogni modo, dovrebbe funzionare.
Tuttavia, se si intende eseguire il codice contenuto nel callback per ciascun blog nella propria rete, tenere presente che ciò non avverrà immediatamente, invece, il codice all'interno del callback verrà inserito nel contesto del blog principale.
Se il tuo codice deve essere eseguito su ciascun blog dopo l'attivazione della rete:
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' );
Se il tuo codice deve essere eseguito quando viene creato un nuovo 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 );
Inoltre:
Per coloro che desiderano funzionalità simili ma per tutti i plug-in che attivano la rete (non solo quello che controlli, se del caso) , ti consigliamo di consultare: https://wordpress.org/plugins/proper-network -Attivazione / che farà in modo che ogni plugin nella rete multisito in cui è attivato rete, ha sia la sua register_activation_hook
e register_deactivation_hook
gestito in ogni contesto blog.