Wie synchronisiert man Rollen auf Multisite?

Wie können Rollen auf allen Websites des Multisite-Netzwerks synchronisiert werden, wenn Rollen auf der Hauptwebsite geändert wurden?

Solutions Collecting From Web of "Wie synchronisiert man Rollen auf Multisite?"

Es gibt einen set_role in der function set_role .

Es ist eine Frage zu erkennen, ob dies auf der Haupt-Website passiert, und, wenn dies der Fall ist, alle Blogs des Benutzers zu erhalten und alle Rollen zu ändern. Weitere Details in den Code-Kommentaren.

 add_action( 'set_user_role', 'sync_user_roles_wpse_91745', 10, 2 ); function sync_user_roles_wpse_91745( $user_id, $role ) { // is_multisite() used just as precaution, this code is meant to Multisite only if( !is_multisite() || !is_main_site() ) return; // Initial data $blogs = get_blogs_of_user( $user_id ); $original_blog_id = get_current_blog_id(); // Remove main site from affected sites unset( $blogs[ $original_blog_id ] ); // Iterate through blogs of user foreach ( $blogs as $blog ) { // Work with another site switch_to_blog( $blog->userblog_id ); // Grab all user info and update role as in main site $site_user = get_user_by( 'id', $user_id ); $site_user->set_role( $role ); } // Back to original main site switch_to_blog( $original_blog_id ); } 

Ich wusste das nicht, aber die Benutzer-ID bleibt im gesamten Netzwerk in den Tabellen wp_users und wp_{$site_id}_users .