Chức năng gọi lại của bạn sẽ chạy khi plugin của bạn được kích hoạt hoặc kích hoạt mạng cho một trang web. Dù bằng cách nào, nó nên được làm việc.
Tuy nhiên, nếu bạn dự định mã được chứa trong cuộc gọi lại của bạn sẽ được chạy cho mỗi blog trong mạng của bạn, thì hãy lưu ý rằng điều này sẽ không xảy ra, thay vào đó, mã trong cuộc gọi lại của bạn sẽ trong ngữ cảnh blog chính.
Nếu mã của bạn cần chạy trên mỗi blog khi Kích hoạt mạng:
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' );
Nếu mã của bạn cần chạy khi một blog mới được tạo:
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 );
Ngoài ra:
Đối với những người đọc muốn có chức năng tương tự nhưng đối với tất cả các plugin được kích hoạt mạng (không chỉ là plugin bạn kiểm soát, nếu có thể áp dụng) , thì bạn có thể muốn xem: https://wordpress.org/plugins/proper-network -activation / sẽ đảm bảo rằng mỗi plugin trong mạng nhiều trang của bạn được kích hoạt mạng, có cả plugin register_activation_hook
và register_deactivation_hook
chạy trong từng ngữ cảnh blog.