Ihre Rückruffunktion sollte ausgeführt werden, wenn Ihr Plugin im Netzwerk oder für eine einzelne Site aktiviert ist. In jedem Fall sollte es funktionieren.
Wenn Sie jedoch möchten, dass der in Ihrem Rückruf enthaltene Code für jedes Blog in Ihrem Netzwerk ausgeführt wird, müssen Sie sich darüber im Klaren sein, dass dies nicht automatisch geschieht, sondern der Code in Ihrem Rückruf im primären Blog-Kontext.
Wenn Ihr Code bei der Netzwerkaktivierung in jedem Blog ausgeführt werden muss:
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' );
Wenn Ihr Code beim Erstellen eines neuen Blogs ausgeführt werden muss:
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 );
Zusätzlich:
Für diejenigen, die ähnliche Funktionen wünschen, aber für alle Plugins, deren Netzwerk aktiviert wird (nicht nur für das Plugin, das Sie steuern, falls zutreffend) , können Sie sich folgende Informationen ansehen: https://wordpress.org/plugins/proper-network -Aktivierung / die sicherstellen, dass jedes Plugin in Ihrem Multi - Site - Netzwerk , in dem Netzwerk aktiviert ist , hat sowohl seine register_activation_hook
und register_deactivation_hook
in jedem Blog Kontext ausgeführt.