ฟังก์ชั่นการโทรกลับของคุณควรทำงานเมื่อปลั๊กอินของคุณเปิดใช้งานเครือข่ายหรือเปิดใช้งานสำหรับไซต์เดียว ไม่ว่าจะด้วยวิธีใดก็ควรใช้งานได้
อย่างไรก็ตามหากคุณต้องการให้รหัสที่อยู่ในการติดต่อกลับของคุณถูกเรียกใช้สำหรับแต่ละบล็อกในเครือข่ายของคุณโปรดทราบว่าสิ่งนี้จะไม่เกิดขึ้นนอกกรอบแทนรหัสภายในการโทรกลับของคุณจะอยู่ในบริบทบล็อกหลัก
หากรหัสของคุณต้องทำงานในแต่ละบล็อกเมื่อเปิดใช้งานเครือข่าย:
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
ทำงานในแต่ละบริบทของบล็อก