当我的订阅者登录时,我想将他们重定向到我们的会员资源页面,但只有当他们从页面(is_page() ). 当他们从我们的自定义帖子类型之一登录时,我希望他们留在这篇帖子上。我们使用弹出模式进行登录,因此在登录过程中,它们不会被重定向到任何地方。
我想要管理员、编辑和;作者登录时将被重定向到WordPress管理仪表板。
这是我尝试过的,但不起作用。当我以管理员或订阅者身份登录时,不会发生任何事情-我仍停留在我所在的页面上:
function custom_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 ) || in_array( \'author\', $user->roles ) ) {
$redirect_to = admin_url();
}
} elseif ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( \'subscriber\', $user->roles ) && is_page() ) {
$redirect_to = home_url(\'member-resources\');
}
} else {
return $redirect_to;
}
}
add_filter( \'login_redirect\', \'custom_login_redirect\', 10, 3 );
SO网友:ScottM
你的逻辑不太正确,因为在某些情况下,你永远不会击中目标return 陈述请尝试以下操作:
function custom_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 ) || in_array( \'author\', $user->roles ) ) {
return $redirect_to;
} else {
if ( in_array( \'subscriber\', $user->roles ) && is_page() ) {
return home_url(\'/member-resources/\');
}
} else {
return $redirect_to;
}
}
add_filter( \'login_redirect\', \'custom_login_redirect\', 10, 3 );