問題描述
我有一個自定義登錄頁面在 http://netballscoop.com/log-in/
當您填寫用户名和密碼時,將重定向到上一頁,您完全可以。當您單擊 「註銷」 時,將重定向到同一頁面。所以這一切都很好。
如果您將用户名/密碼留空或出現錯誤,將導致您進入 wp-login 。為了防止這種情況,我使用了 https://stackoverflow.com/questions/11477107/redirect-away-from-login-page 的代碼
add_action('login_redirect', 'redirect_login', 10, 3);
function redirect_login($redirect_to, $url, $user) {
if($user->errors['empty_password']){
wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['empty_username']){
wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['invalid_username']){
wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['incorrect_password']){
wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else{
wp_redirect(get_bloginfo('url').'/log-in');
}
exit;
}
這對我的網站登錄錯誤非常有用。但是現在,登錄重定向會將您帶到 http://netballscoop.com/members/testing(用户’Testing’ 是由他們的 BuddyPress 成員的個人資料頁面) 。
用户登錄時如何將其重定向到上一頁?
最佳解決方案
您可以過濾 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 網站上的文檔詳細描述了這些操作和鈎子,組織方式有限,有些不完整 (據我所知),我建議 (任何人) 尋求進一步的信息,瞭解哪些和什麼過濾什麼應該採取什麼看看這個資源,這裏提供了一個詳細的掛鈎和過濾器列表。
備註:(雜項)
更改'subscriber'以匹配您為該類型的用户使用的角色。它也可以接受多個角色,因為它以數組的形式。
in_array( $user->roles[0], array( 'subscriber', 'role2, role3', 'etc')
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。