問題描述

對於演示環境,我想要 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。