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.
register_activation_hook
ist nur ein Wrapper, aufadd_action('activate_' . $file, $function)
den selbst zugegriffen wird. Von diesem Wrapperdo_action( 'activate_' . $plugin, $network_wide )
können Sie die Variable$network_wide
und ihren Wertezustand ablesen , entwedertrue
oder erfalse
wird immer als Argument an den Rückruf übergeben. Daher haben Sie Zugriff auf dieses Argument in Ihrenregister_activation_hook
undregister_deactivation_hook
Wrappern. Weitere Informationen finden Sie unteractivate_plugin
Funktion innerhalbwp-admin/includes/plugin.php
. Ich hoffe, das hilft.restore_current_blog
muss in derforeach
Schleife sein, denn wenn Sie es nach draußen stellen, iterieren (umschalten) Sie beispielsweise auf 10 Blogs. Der letzte Aufruf stelltrestore_current_blog
das letzte Blog wieder her, zu dem Sie gewechselt haben, und NICHT das ursprüngliche Blog, bei dem Sie begonnen haben (vermutlich) Ihre Hauptseite). codex.wordpress.org/WPMU_Functions/restore_current_blog