Cách điền trước các trường tên người dùng / mật khẩu trên trang đăng nhập


8

Đối với môi trường demo, tôi muốn điền trước các trường tên người dùng và mật khẩu của biểu mẫu đăng nhập wp với chuỗi "demo" và "demo" tương ứng.

Do đó, người dùng sẽ chỉ cần nhấp vào nút "Đăng nhập" để kết nối với khu vực quản trị.

Có cách nào để làm điều đó? Có lẽ với một cái móc?

Cảm ơn lời khuyên của bạn

Câu trả lời:


6

Kết quả

nhập mô tả hình ảnh ở đây

tên tài khoản

Bạn có thể khai báo giá trị trường biểu mẫu toàn cầu và điền trước nó.

Điều này sẽ ghi đè bất kỳ cài đặt nào được thực hiện thông qua hộp "Ghi nhớ tôi".

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

Mật khẩu

Tôi không tìm thấy gì mà bạn có thể sử dụng để điền trước nó, vì vậy tôi sẽ thêm một ghi chú. Rất vui / Đáng buồn là có toàn bộ các bảng định kiểu cho giao diện người dùng quản trị viên có sẵn. Vì vậy, .wraptrong kết nối với h2cho một phong cách tốt đẹp. Hàm được nối với móc trường bổ sung cho móc quản trị. Ưu tiên là 0đặt nó trên các trường bổ sung.

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

Bảo mật: Ẩn lỗi

Vì ai đó sẽ có được bằng chứng trực quan rằng anh ta đã nhập tên người dùng hiện tại theo mặc định, tôi sẽ thêm phần sau vào tệp tin.php của bạn, để tránh cho biết tên người dùng đã được đoán đúng chưa:

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

Các bộ lọc khác

Ghi chú:

  • Nếu bạn muốn thay thế những thứ khác như phong cách, thì bạn có thể sử dụng login_enqueue_scriptshook.
  • Bạn cũng có thể thay thế liên kết đằng sau logo bằng login_headerurlbộ lọc lọc url. Các liên kết titlecó thể được thay thế bằng cách sử dụng login_headertitle. Cả hai kích hoạt cho multisite cũng như một thiết lập trang web.
  • Thông điệp đăng nhập có thể được thay đổi bằng login_messagebộ lọc.

6

bạn có thể sử dụng mã này để tự động đăng nhập người dùng:

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);
    }
}

Sẽ còn tuyệt hơn nữa nếu bạn không lấy ID mà thay vào đó hãy lấy tên người dùng. +1 dù sao đi nữa.
kaiser

2
Bạn có thể! get_user_by( 'login', 'demo' );
SickHippie

1
Sẽ không phải là initmóc là đủ? Nó có mặt ở khắp mọi nơi ...
kaiser

3

Dưới đây là 3 cách để làm điều đó:

Cách đầu tiên là sử dụng móc 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();
}

Cách thứ hai, là sử dụng jQuery .val()và thêm nó vào trang đăng nhập của bạn

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

Cách cuối cùng là chỉnh sửa wp-login.phptệp của bạn (Lưu ý, điều này không được khuyến khích mặc dù nó sẽ hoạt động).


1) sẽ cần một sự thay thế cho toàn bộ tệp wp-login.php - Bạn sẽ làm điều đó như thế nào (Q nghiêm túc - Tôi quan tâm)? Viết lại quy tắc để mẫu của bạn sẽ được kích hoạt thay thế? 2) là hợp lệ, nhưng sẽ cần jQuery và được gói vào một jQuery( document ).ready( function( $ )cuộc gọi để làm cho $khả dụng và chức năng hoạt động. Bạn cũng chỉ cần gọi jQuerycho việc này. 3) Ok, tốt ... Chúng ta đừng nói gì về nó :)
kaiser

1) Tôi không chắc chắn, tôi chủ yếu là bão não không bao giờ làm điều đó. đối với 2) có vẻ như jquery đã được tải trong trang đăng nhập của tôi. Tôi cũng lười biếng và không gói ví dụ của mình vào jQuery(document...thẻ. 3) Nó không bao giờ xảy ra.
Brooke.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.