* @since 3.2.0 * @return array */ public function get_roles( WP_User $user ): array { $user_roles = (array) $user->roles; // If user is super admin if ( is_multisite() && is_super_admin( $user->ID ) && ! in_array( $this->super_admin_slug, $user_roles, true ) ) { $user_roles[] = $this->super_admin_slug; } return $user_roles; } /** * Get all roles editable by current user. * * @since 3.2.0 * @return array */ public function get_all_editable_roles(): array { $editable_roles = wp_list_pluck( get_editable_roles(), 'name' ); if ( is_multisite() && is_super_admin() ) { $editable_roles = array_merge( [ $this->super_admin_slug => 'Super Admin', ], $editable_roles ); } return $editable_roles; } /** * Does the current user have admin credentials? * * @param $user * * @return bool */ public function is_admin( $user ): bool { if ( $user ) { if ( is_multisite() ) { if ( user_can( $user, 'manage_network' ) ) { return true; } } else { if ( user_can( $user, 'manage_options' ) ) { return true; } } } return false; } }