您可以筛选login_redirect
像这样工作,根据需要进行调整。
add_filter(\'login_redirect\', \'redirect_previous_page\', 10, 1);
function redirect_previous_page( $redirect_to ){
global $user;
$request = $_SERVER["HTTP_REFERER"];
if ( in_array( $user->roles[0], array( \'administrator\') ) ) {
return admin_url();
} elseif ( in_array( $user->roles[0], array( \'subscriber\') ) ) {
return $request;
}
return $redirect_to;
}
更新1:代码(如上)已在上面进行了修改和测试-正常工作。
更新2:(Tanya)
与@userabuser聊天,得出了这个有效的答案。
// Redirect to previous page
remove_all_filters(\'login_redirect\', 99);
add_filter(\'bbp_user_login_redirect_to\', \'function_name\');
重要提示:事实证明Tanya使用的是bbPress论坛插件,因此尽管最初的代码片段使用,
add_filter(\'login_redirect\', \'function_name\'); //the standard WordPress API filter
这是正确的,并且在
"normal" WordPress条件,在这种情况下,被bbPress筛选器优先覆盖,
add_filter(\'bbp_user_login_redirect_to\', \'function_name\'); //the bbPress API filter
现在,由于
bbPress.org 详细描述这些行为和挂钩的网站组织得很差,而且有些不完整(据我所知),我建议(任何人)寻求有关这些行为和挂钩的进一步信息
what hooks where 和
what filters what, 应该看看
this resource here 它提供了挂钩和过滤器的详细列表。
注:(其他)
更改
\'subscriber\'
以匹配您用于该类型用户的角色。它还可以接受多个角色,因为它以数组的形式存在。
in_array( $user->roles[0], array( \'subscriber\', \'role2, role3\', \'etc\')