diff --git a/wp-includes/class-wp-roles.php b/wp-includes/class-wp-roles.php index b7558748db..a665191f4a 100644 --- a/wp-includes/class-wp-roles.php +++ b/wp-includes/class-wp-roles.php @@ -127,6 +127,15 @@ class WP_Roles { $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); $this->role_names[$role] = $this->roles[$role]['name']; } + + /** + * After the roles have been initialized, allow plugins to add their own roles. + * + * @since 4.7.0 + * + * @param WP_Roles A reference to the WP_Roles object. + */ + do_action( 'wp_roles_init', $this ); } /** @@ -136,28 +145,12 @@ class WP_Roles { * after switching wpdb to a new site ID. * * @since 3.5.0 + * @deprecated 4.7.0 Use new WP_Roles() * @access public */ public function reinit() { - global $wpdb; - - // There is no need to reinit if using the wp_user_roles global. - if ( ! $this->use_db ) { - return; - } - - // Duplicated from _init() to avoid an extra function call. - $this->role_key = $wpdb->get_blog_prefix() . 'user_roles'; - $this->roles = get_option( $this->role_key ); - if ( empty( $this->roles ) ) - return; - - $this->role_objects = array(); - $this->role_names = array(); - foreach ( array_keys( $this->roles ) as $role ) { - $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] ); - $this->role_names[$role] = $this->roles[$role]['name']; - } + __deprecated_function( __METHOD__, '4.7.0', 'new WP_Roles()' ); + $this->_init(); } /** diff --git a/wp-includes/ms-blogs.php b/wp-includes/ms-blogs.php index db3e4639c1..9188750386 100644 --- a/wp-includes/ms-blogs.php +++ b/wp-includes/ms-blogs.php @@ -766,7 +766,7 @@ function update_blog_option( $id, $option, $value, $deprecated = null ) { * @return true Always returns True. */ function switch_to_blog( $new_blog, $deprecated = null ) { - global $wpdb; + global $wpdb, $wp_roles; $blog_id = get_current_blog_id(); if ( empty( $new_blog ) ) { @@ -822,7 +822,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) { } if ( did_action( 'init' ) ) { - wp_roles()->reinit(); + $wp_roles = new WP_Roles(); $current_user = wp_get_current_user(); $current_user->for_blog( $new_blog ); } @@ -850,7 +850,7 @@ function switch_to_blog( $new_blog, $deprecated = null ) { * @return bool True on success, false if we're already on the current blog */ function restore_current_blog() { - global $wpdb; + global $wpdb, $wp_roles; if ( empty( $GLOBALS['_wp_switched_stack'] ) ) { return false; @@ -896,7 +896,7 @@ function restore_current_blog() { } if ( did_action( 'init' ) ) { - wp_roles()->reinit(); + $wp_roles = new WP_Roles(); $current_user = wp_get_current_user(); $current_user->for_blog( $blog ); } diff --git a/wp-includes/version.php b/wp-includes/version.php index 661b3d0c68..523c431585 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.7-beta1-39081'; +$wp_version = '4.7-beta1-39082'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.