sync user roles across WordPress Multisite:
<?php function wpmu_sync_user_roles( $user_id, $role ) { // is_multisite() used just as precaution, this code is meant to Multisite only if( ! is_multisite() || ! is_main_site() ) { return; } // if( get_current_blog_id() == $id ) {} // $blogs = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" ); // get all blogs via sql $blogs = get_blogs_of_user( $user_id ); $original_blog_id = get_current_blog_id(); unset( $blogs[ $original_blog_id ] ); // remove main site from affected sites foreach( $blogs as $blog ) { // iterate through blogs of user switch_to_blog( $blog->userblog_id ); // switch to another site $site_user = get_user_by( 'id', $user_id ); $site_user->set_role( $role ); // update role like on main site } restore_current_blog(); // return to current site } add_action( 'set_user_role', 'wpmu_sync_user_roles', 10, 2 ); ?>
Sync all roles with capabilities on all sites of the WordPress Multisite Network:
<?php global $wpdb, $wppa_roles; if ( is_multisite() && is_super_admin() /*&& $wppa_apply_to_all*/ ) { // sync user roles !!!!!!!!!!!!!!!!!!!!!!!!!!!! $blogIds = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" ); $user_capabilities = get_option( $wpdb->prefix.'user_roles'); foreach( $blogIds as $blog_id ) { switch_to_blog( $blog_id ); $wppa_roles = wppa_getUserRoles(); $option_name = $wpdb->prefix.'user_roles'; $result = update_option( $option_name, $user_capabilities ); } restore_current_blog(); $wppa_roles = wppa_getUserRoles(); } function wppa_getUserRoles( $wppa_object='role' ) { global $wp_roles; if( ! isset( $wp_roles ) ) { $wp_roles = new WP_Roles(); } if( 'role'===$wppa_object && function_exists( 'bbp_filter_blog_editable_roles' ) ) { // bbPress plugin is active $wppa_roles = bbp_filter_blog_editable_roles( $wp_roles->roles ); // exclude bbPress roles $bbp_full_caps = bbp_get_caps_for_role( bbp_get_keymaster_role() ); // add bbPress keymaster caps to Administrator role $wppa_roles['administrator']['capabilities'] = array_merge( $wppa_roles[ 'administrator' ]['capabilities'], $bbp_full_caps ); }else{ $wppa_roles = $wp_roles->roles; } if ( is_array( $wppa_roles ) && count( $wppa_roles ) > 0 ) { asort( $wppa_roles ); } return $wppa_roles; } // end of wppa_getUserRoles() ?>