Cara mengisi bidang nama pengguna / kata sandi pada halaman login

8

Untuk lingkungan demo, saya ingin mengisi terlebih dahulu bidang nama pengguna dan kata sandi dari formulir wp-login dengan masing-masing string "demo" dan "demo".

Dengan demikian pengguna hanya perlu mengklik tombol "Masuk" untuk terhubung ke area admin.

Ada cara untuk melakukan itu? Mungkin dengan kail?

Terima kasih atas saran Anda

Gilles Vauvarin
sumber

Jawaban:

6

Hasil

masukkan deskripsi gambar di sini

Nama pengguna

Anda bisa mendeklarasikan nilai bidang formulir global dan mengisinya.

Ini akan mengesampingkan pengaturan apa pun yang dilakukan melalui kotak "Ingat saya".

/**
 * 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' );

Kata sandi

Saya tidak menemukan apa pun yang dapat Anda gunakan untuk memulainya, jadi saya akan menambahkan catatan. Dengan senang hati / Sedih ada seluruh rangkaian stylesheet untuk UI admin yang tersedia. Jadi .wrapsehubungan dengan h2memberikan gaya yang bagus. Fungsi ini dihubungkan ke kait bidang tambahan untuk kait admin. Prioritasnya adalah 0mengaturnya di atas bidang tambahan.

/**
 * 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 );

Keamanan: Sembunyikan Kesalahan

Karena seseorang akan mendapatkan bukti visual bahwa ia memasukkan nama pengguna yang sudah ada secara default, saya akan menambahkan yang berikut ini ke file functions.php Anda, untuk menghindari memberi tahu jika nama pengguna ditebak dengan benar:

/**
 * Hide wrong login names
 * 
 * @return string
 */
function no_login_error() 
{
    return __( 'Wrong Credentials.' );
}
add_filter( 'login_errors', 'no_login_error' );

Filter lainnya

Catatan:

  • Jika Anda ingin mengganti hal-hal lain seperti gaya, maka Anda dapat menggunakan login_enqueue_scriptspengait.
  • Anda juga dapat mengganti tautan di belakang logo menggunakan login_headerurlfilter yang memfilter url. Tautan titledapat diganti menggunakan login_headertitle. Keduanya memicu multisite dan juga satu pengaturan situs.
  • Pesan masuk dapat diubah menggunakan login_messagefilter.
kaisar
sumber
6

Anda dapat menggunakan kode ini untuk masuk secara otomatis ke pengguna:

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);
    }
}
Bainternet
sumber
Akan lebih keren jika Anda tidak akan mengambil ID, tetapi sebaliknya mendapatkan nama pengguna. Tetap memberi +1.
kaiser
2
Kamu bisa! get_user_by( 'login', 'demo' );
SickHippie
1
Bukankah initkail saja sudah cukup? Ini hadir di mana-mana ...
kaiser
3

Berikut adalah 3 cara untuk melakukannya:

Cara pertama adalah menggunakan kait wp_signon

$creds = array();    
$creds['user_login'] = 'example';   
$creds['user_password'] = 'plaintextpw';   
$creds['remember'] = true;   
$user = wp_signon( $creds, false );  
if ( is_wp_error($user) ) {  
   echo $user->get_error_message();
}

Cara kedua, adalah menggunakan jQuery .val()dan menambahkannya ke halaman login Anda

$("#user_login").val('username');    
$("#user_pass").val('password');

Cara terakhir adalah mengedit wp-login.phpfile Anda (Catatan, ini tidak disarankan meskipun akan berfungsi).

Brooke.
sumber
1) akan membutuhkan pengganti untuk seluruh file wp-login.php - Bagaimana Anda melakukannya (Q serius - saya tertarik)? Tulis ulang aturan sehingga templat Anda akan terpicu? 2) valid, tetapi akan membutuhkan jQuery dan dibungkus menjadi jQuery( document ).ready( function( $ )panggilan untuk membuat $tersedia dan fungsi berfungsi. Anda juga perlu menelepon jQueryhanya untuk ini. 3) Ok, well ... Katakan saja tentang hal itu :)
kaiser
1) Saya tidak yakin, otak saya kebanyakan tidak pernah melakukannya. adapun 2) sepertinya jquery sudah dimuat di halaman login saya. Saya juga malas dan tidak membungkus contoh saya di jQuery(document...tag. 3) Itu tidak pernah terjadi.
Brooke.