我按照在线说明将功能添加到我的子主题的functions.php
文件中,该功能应将某些角色的用户重定向到特定的URL。
不幸的是,这不起作用。
我已经彻底地重新分析了我的代码,并将其与各种在线解决方案进行了比较,但是,我无法使其在我的网站上生效。
我的代码:
// Custom successful login redirect based on user role
function my_login_redirect( $redirect_to, $request, $user ) {
// is there a user to check?
global $user;
if (isset($user->roles) && is_array($user->roles)) {
// check for 'company' user role and redirect in case
if (in_array('company', $user->roles)) {
$redirect_to = home_url('/arbeitskraft-finden/');
// check for 'worker' user role and redirect in case
} elseif (in_array('worker', $user->roles)) {
$redirect_to = home_url('/wp-admin/chat/');
// otherwise, redirect to wp-admin
} else {
$redirect_to = home_url('/wp-admin/');
}
} else {
return $redirect_to;
}
}
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
// END Custom successful login redirect based on user role
预期结果:
答案 0 :(得分:1)
我回到了我使用过的最初信息源,即WordPress Codex:Link to the Codex
我意识到变量$user
并未在该函数内部全局定义。我不知道在我的代码中是怎么回事。
在删除它之后,并且在为第一条else
删除了第二个if
之后,代码也可以正常工作,并且看起来像这样:
// Custom successful login redirect based on user role
function my_login_redirect( $redirect_to, $request, $user ) {
// is there a user to check?
if (isset($user->roles) && is_array($user->roles)) {
// check for 'company' user role and redirect in case
if (in_array('company', $user->roles)) {
$redirect_to = home_url('/arbeitskraft-finden/');
// check for 'worker' user role and redirect in case
} elseif (in_array('worker', $user->roles)) {
$redirect_to = home_url('/wp-admin/chat/');
// otherwise, redirect to wp-admin
} else {
$redirect_to = home_url('/wp-admin/');
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
// END Custom successful login redirect based on user role
答案 1 :(得分:0)
您需要在 else 条件之外返回变量 $ redirect_to ,因为当您检查是否设置了用户角色时,您只会为该变量分配一个值。不退还。请尝试此代码
// Custom successful login redirect based on user role
function my_login_redirect( $redirect_to, $request, $user ) {
// is there a user to check?
global $user;
if (isset($user->roles) && is_array($user->roles)) {
// check for 'company' user role and redirect in case
if (in_array('company', $user->roles)) {
$redirect_to = home_url('/arbeitskraft-finden/');
// check for 'worker' user role and redirect in case
} elseif (in_array('worker', $user->roles)) {
$redirect_to = home_url('/wp-admin/chat/');
// otherwise, redirect to wp-admin
} else {
$redirect_to = home_url('/wp-admin/');
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
// END Custom successful login redirect based on user role