* @var string $role_slug * @return array|mixed */ static function get_role_class($role_slug) { $role_classes = self::role_classes(); return isset($role_classes[$role_slug]) ? $role_classes[$role_slug] : null; } /** * @return array|mixed */ static function role_classes() { return WPLib::get_child_classes('WPLib_User_Base', 'ROLE'); } /** * @param string $role_slug * * @return bool */ static function current_user_is($role_slug) { /** * @var WP_User $current_user */ $current_user = wp_get_current_user(); return isset($current_user->roles) && is_array($current_user->roles) && in_array($role_slug, $current_user->roles); } } WPLib_Roles::on_load();
/** * @param WP_User|int|string|null $wp_user * * @return mixed|null */ static function make_user($wp_user) { if (!($role_slug = self::get_assigned_role_slug($wp_user))) { $user = null; } else { $role_class = WPLib_Roles::get_role_class($role_slug); $user = new $role_class($wp_user); } return $user; }