問題描述
對於演示環境,我想要 pre-fill wp-login 形式的使用者名稱和密碼欄位分別為”demo” 和”demo” 字串。
因此,使用者只需點選”Log-in” 按鈕即可連線到管理區域。
有辦法做到這一點也許掛鉤?
感謝您的建議
最佳解決方案
結果
Username
您可以宣告表單欄位值全域性並預填充它。
This will override any setting done via the “Remember me”-Checkbox.
/**
* Changes the default user name to "DEMO"
*
* @return string $user_login
*/
function login_form_username()
{
global $user_login;
return $user_login = 'DEMO';
}
add_action( 'login_head', 'login_form_username' );
Password
我發現沒有什麼可以用來預先填寫,所以我會新增一個註釋。很高興/可悲的是,有可用的管理介面的整套樣式表。所以與 h2 相關的.wrap 給出了很好的造型。該功能掛接到管理鉤子的附加欄位鉤。優先順序是 0 將其設定為額外的欄位。
/**
* Adds a note beyond the user login name & password field
*
* @return string
*/
function login_form_note()
{
print '<div class="wrap"><h2 style="text-align: center;">The Password is "DEMO"</h2></div>';
}
add_action( 'login_form', 'login_form_note', 0 );
安全:隱藏錯誤
由於有人會獲得預設情況下輸入現有使用者名稱的視覺證據,所以我將把以下內容新增到你的 functions.php 檔案中,以避免告訴使用者名稱是否正確:
/**
* Hide wrong login names
*
* @return string
*/
function no_login_error()
{
return __( 'Wrong Credentials.' );
}
add_filter( 'login_errors', 'no_login_error' );
其他過濾器
筆記:
-
如果要替換其他類似樣式的東西,則可以使用
login_enqueue_scripts鉤。 -
您還可以使用過濾網址的
login_headerurl過濾器替換徽標後面的連結。連結title可以使用login_headertitle替換。兩者都觸發多站點以及單個站點設定。 -
可以使用
login_message過濾器更改登入訊息。
次佳解決方案
您可以使用此程式碼自動登入使用者:
add_action('init', 'auto_login');
add_action('admin_init', 'auto_login');
function auto_login() {
if (!is_user_logged_in()) {
//by user name
$user = get_user_by( 'login', 'demo' );
//Or by user id, 2 being the ID of the demo user
//$user = get_userdata(2);
wp_set_current_user($user->ID, $user->user_login);
wp_set_auth_cookie($user->ID);
do_action('wp_login', $user->user_login);
}
}
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。
