Функція зворотного дзвінка повинна запускатися, коли ваш плагін активовано або активовано мережею для одного сайту. Так чи інакше, це повинно працювати.
Однак, якщо ви плануєте запускати код, який міститься у вашому зворотному дзвінку, для кожного блогу у вашій мережі, то майте на увазі, що це не відбудеться поза кодом, натомість код у вашому зворотному дзвінку буде в основному контексті блогу.
Якщо ваш код потрібно запускати на кожному блозі після активації мережі:
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' );
Якщо ваш код потрібно запустити під час створення нового блогу:
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 );
Додатково:
Для тих, хто читає, хто хоче подібну функціональність, але для всіх плагінів, які активують мережу (не лише ту, якою ви керуєте, якщо вона взагалі застосовна) , ви можете подивитися: https://wordpress.org/plugins/proper-network -активація / що забезпечить, що кожен плагін у вашій багатосайтовій мережі, в якій активована мережа, має і свої, register_activation_hook
і register_deactivation_hook
запускається в кожному контексті блогу.