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.
register_activation_hook
hanyalah pembungkus diadd_action('activate_' . $file, $function)
mana dengan sendirinya menyala,do_action( 'activate_' . $plugin, $network_wide )
di mana Anda dapat melihat variabel$network_wide
dan status nilainya, salah satu dari keduanyatrue
ataufalse
selalu dilewatkan sebagai argumen ke callback. Karenanya, Anda memiliki akses ke argumen ini di pembungkus Andaregister_activation_hook
danregister_deactivation_hook
. Untuk informasi lebih lanjut lihatactivate_plugin
fungsi di dalamnyawp-admin/includes/plugin.php
. Semoga itu bisa membantu.restore_current_blog
perlu diforeach
loop, karena jika Anda meletakkannya di luar, maka iterate (beralih) ke 10 blog misalnya, panggilan terakhir untukrestore_current_blog
akan mengembalikan blog terakhir Anda beralih dan TIDAK blog asli Anda mulai (mungkin situs utama Anda). codex.wordpress.org/WPMU_Functions/restore_current_blog