2016-05-13 75 views
1

我正在使用下面的功能將非管理員用戶重定向到我的站點的主頁,而不是登錄時的管理頁面,並且我想知道是否存在任何方式適應功能指向我的網站的子域?用戶登錄Wordpress站點時重定向到子域的功能

我已經嘗試輸入site_url()中子域的完整URL,但這不起作用。是否有另一種方法來實現這一點?基本上我想讓用戶在登錄時重定向到我們的論壇論壇。

function acme_login_redirect($redirect_to, $request, $user ) { 
    return (is_array($user->roles) && in_array('administrator', $user->roles)) ? admin_url() : site_url(); 
} 
add_filter('login_redirect', 'acme_login_redirect', 10, 3); 

回答

1

login_redirect過濾器調用wp_safe_redirect()如果一個字符串(URL)在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

+1

一個可行的治療。感謝功能和詳細的解釋。很有幫助。 – Nick

相關問題