我使用以下功能将非管理员用户重定向到我网站的主页而不是登录时的管理页面,我想知道是否有任何方法可以将功能调整到指向我网站的子域名?
我尝试在site_url()中输入子域的完整网址,但这并不起作用。有没有另一种方法来实现这一目标?基本上我希望用户在登录时被重定向到我们的话语论坛。
ProcInfo.hThread
答案 0 :(得分:1)
如果login_redirect
过滤器功能中返回了字符串(url),则wp_safe_redirect()
过滤器会调用login_redirect
。
然后wp_safe_redirect()
检查返回的字符串(url)是否在允许的主机列表中,如果返回的字符串存在于允许的主机中,则wp_safe_redirect()
将用户重定向到返回的字符串(url)否则用户将被重定向到siteurl上的wp-admin。
因此,在添加login_redirect
过滤器之前,您应该使用allowed_redirect_hosts
过滤器在白名单中添加主机。
function my_allowed_redirect_hosts($content){
$content[] = 'google.com'; // Do not add http://
return $content;
}
add_filter( 'allowed_redirect_hosts' , 'my_allowed_redirect_hosts' , 10 );
function acme_login_redirect($redirect_to, $requested_redirect_to, $user) {
if (is_array($user->roles) && in_array('administrator', $user->roles)) {
return admin_url();
}
else
{
return 'http://google.com';
}
}
add_filter( 'login_redirect', 'acme_login_redirect', 10, 3 );
有关详情,请查看allowed_redirect_hosts
要详细了解login_redirect的工作原理,请转到login_redirect并滚动到第807行