Fungsi panggilan balik Anda harus dijalankan ketika plugin Anda diaktifkan atau diaktifkan untuk satu situs. Either way, itu harusnya berfungsi.
Namun, jika Anda bermaksud agar kode yang terkandung dalam panggilan balik Anda dijalankan untuk setiap blog di jaringan Anda, maka ketahuilah bahwa ini tidak akan terjadi di luar kotak, sebaliknya, kode dalam panggilan balik Anda akan berada dalam konteks blog utama.
Jika kode Anda perlu dijalankan di setiap blog setelah Aktivasi Jaringan:
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' );
Jika kode Anda perlu dijalankan saat blog baru dibuat:
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 );
Selain itu:
Bagi mereka yang ingin fungsi serupa tetapi untuk semua plugin yang mengaktifkan jaringan (bukan hanya yang Anda kendalikan, jika berlaku) , maka Anda mungkin ingin melihat: https://wordpress.org/plugins/proper-network -aktivasi / yang akan memastikan bahwa setiap plugin di jaringan multisite Anda di mana jaringan diaktifkan, memiliki keduanya register_activation_hook
dan register_deactivation_hook
berjalan di setiap konteks blog.