wordpress - 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等。
我显然是个布偶——因为我想要的很简单:
- 所有用户 - 强制登录
- 非管理员 - 从登录到带有用户个人资料的首页(通过 Learndash 短代码)
- 管理员 - 从登录转到管理仪表板 / wp-admin
感谢,如果有人有时间帮助尝试学习的业余爱好者!
解决方案
不要使用登录重定向插件,而是尝试连接到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 );
推荐阅读
- latitude-longitude - PHP中的DMS到Lat Long转换
- javascript - 带有多值复选框的 HTML 表单
- python - 如何使用 .SAS 或 SPS 元数据文件将 CSV 读取为 Pandas 数据框?
- reporting-services - 如果查找函数包含 SSRS 报告中的任何函数,则使用查找函数?
- javascript - 如果 URL 中的日期晚于当前月份,则重定向
- android - 实现 'com.firebaseui:firebase-ui-auth:6.0.2' (Firebase Auth UI) 给我错误
- javascript - 如何根据列表中的深度使用 jQuery 将 id 标签递归添加到 ul 和 li 元素?
- ruby-on-rails - 使用布尔值设置 Rails 选择框的样式
- face-recognition - 使用 dlib JNI 进行人脸识别
- stripe-payments - 在创建 Stripe 订阅之前获取价格