返回博客

WordPress 中如何根据用户角色重定向用户登录

2022-02-142 分钟阅读

如果您的 WordPress 网站/项目需要根据用户角色在用户成功登录后重定向到不同的页面,您可以使用以下任何插件:

  1. https://wordpress.org/plugins/role-based-redirect/
    1. 文档: https://wordpress.org/plugins/role-based-redirect/
  2. https://wordpress.org/plugins/peters-login-redirect/
    1. 文档: https://loginwp.com/docs/

如果您想减少插件数量并使用自定义代码进行重定向该怎么办?

您可以使用如下代码片段(您可以将代码添加到 functions.php 文件或现有的自定义插件中):

/**
 * 用户登录后重定向。
 * @param $redirect_to
 * @param $request
 * @param $user
 * @return mixed|string|void
 */
function my_site_login_redirect( $redirect_to, $request, $user ) {
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        if ( in_array( 'administrator', $user->roles ) || in_array( 'editor', $user->roles ) ) {
            $redirect_to = admin_url();
        } else if ( in_array( 'customer', $user->roles ) ) {
            $redirect_to = home_url( '/shop/' );
        } else {
            $redirect_to = home_url('/shop');
        }
    }
    return $redirect_to;
}
add_filter( 'login_redirect', 'my_site_login_redirect', 10, 3 );

关于代码的简要说明

该代码实现了 login_redirect 过滤器
代码检查用户是否具有管理员或编辑者角色,如果是,则用户将被重定向到管理仪表盘页面,否则如果用户具有 vip_customer 角色,用户将被重定向到 /custom-dashboard 页面,任何其他用户将被重定向到 /shop 页面。

分类: