首页 > 解决方案 > WordPress - 在登录时将非管理员重定向到主页

问题描述

为业余问题道歉,但我在 WordPress 中有点挣扎,感谢任何帮助。

我已经使用 LearnDash 构建了一个 LMS 站点。主页只是一个登录,所以我添加了以下内容functions.php

function admin_redirect() {
 if ( !is_user_logged_in()) {
   wp_redirect( home_url('login') );
   exit;
 }
}
add_action('get_header', 'admin_redirect');

我已将首页设置为学习者资料。我假设用户在登录时会被重定向到这里,但他们会进入 wp-admin 仪表板(我不希望非管理员看到)。

因为我的编码技能很差,所以我安装了“Peter 的登录重定向”并要求它将用户重定向到主页/首页(即用户个人资料页面)。

然后我在不同的浏览器上进行了尝试,有时我会进入首页/用户个人资料,但有时我会被退回到 WP-Admin。我试过隐身模式,清除cookies等。

我显然是个布偶——因为我想要的很简单:

感谢,如果有人有时间帮助尝试学习的业余爱好者!

标签: wordpress

解决方案


不要使用登录重定向插件,而是尝试连接到login_redirect. 这是基于文档中示例的示例。

function example_login_redirect( $redirect_to, $request, $user ) {
    //is there a user to check?
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        //check for admins
        if ( in_array( 'administrator', $user->roles ) ) {
            // redirect Admins to WP Admin
            return home_url('wp-admin');
        } else {
            // redirect everyone else to the home page
            return home_url();
        }
    } else {
        return home_url();
    }
}
add_filter( 'login_redirect', 'example_login_redirect', 10, 3 );

推荐阅读