Su función de devolución de llamada debe ejecutarse cuando su complemento está activado en la red o activado para un solo sitio. De cualquier manera, debería estar funcionando.
Sin embargo, si tiene la intención de que el código contenido dentro de su devolución de llamada se ejecute para cada blog en su red, tenga en cuenta que esto no sucederá de manera inmediata, sino que el código dentro de su devolución de llamada lo hará en el contexto primario del blog.
Si su código necesita ejecutarse en cada blog luego de la activación de la red:
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 su código necesita ejecutarse cuando se crea un nuevo 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 );
Adicionalmente:
Para aquellos lectores que desean una funcionalidad similar pero para todos los complementos que activan la red (no solo el que usted controla, si corresponde) , puede consultar: https://wordpress.org/plugins/proper-network -activation / que asegurará que cada complemento en su red multisitio en el que está activada la red, tenga ambos register_activation_hook
y se register_deactivation_hook
ejecute en cada contexto de blog.
register_activation_hook
es sólo una envoltura alrededor deadd_action('activate_' . $file, $function)
la cual en sí misma dispara contra,do_action( 'activate_' . $plugin, $network_wide )
de los cuales se puede ver la variable$network_wide
y el valor de su estado, ya sea uno detrue
ofalse
siempre se pasa como argumento a la devolución de llamada. Por lo tanto, tiene acceso a este argumento en suregister_activation_hook
yregister_deactivation_hook
contenedores. Para más información vea laactivate_plugin
función dentrowp-admin/includes/plugin.php
. Espero que ayude.restore_current_blog
necesita estar en elforeach
ciclo, porque si lo coloca afuera, luego itere (cambie) a 10 blogs, por ejemplo, la última llamada arestore_current_blog
restaurará el último blog al que cambió y NO el blog original en el que comenzó (presumiblemente su sitio principal) codex.wordpress.org/WPMU_Functions/restore_current_blog