So füllen Sie die Felder für Benutzername / Passwort auf der Anmeldeseite vor

8

Für eine Demo-Umgebung möchte ich die Felder für Benutzername und Passwort des wp-Login-Formulars mit der Zeichenfolge "demo" bzw. "demo" vorab ausfüllen.

Daher müssen Benutzer nur auf die Schaltfläche "Anmelden" klicken, um eine Verbindung zum Administrationsbereich herzustellen.

Gibt es einen Weg das zu tun? Vielleicht mit einem Haken?

Vielen Dank für Ihre Ratschläge

Gilles Vauvarin
quelle

Antworten:

6

Das Ergebnis

Geben Sie hier die Bildbeschreibung ein

Nutzername

Sie können den Formularfeldwert als global deklarieren und vorab ausfüllen.

Dies überschreibt alle Einstellungen, die über das Kontrollkästchen "Remember me" vorgenommen wurden.

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

Passwort

Ich habe nichts gefunden, mit dem Sie es vorfüllen können, also würde ich eine Notiz hinzufügen. Gerne / Leider gibt es alle Stylesheets für die Admin-Benutzeroberfläche. Also .wrapin Verbindung mit h2gibt ein schönes Styling. Die Funktion ist mit dem zusätzlichen Feld-Hook für den Admin-Hook verknüpft. Die Priorität besteht 0darin, sie über zusätzlichen Feldern festzulegen.

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

Sicherheit: Fehler ausblenden

Da jemand einen visuellen Beweis dafür erhalten würde, dass er standardmäßig einen vorhandenen Benutzernamen eingegeben hat, würde ich Ihrer Datei functions.php Folgendes hinzufügen, um nicht zu sagen, ob der Benutzername richtig erraten wurde:

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

Andere Filter

Anmerkungen:

  • Wenn Sie andere Dinge wie Stile ersetzen möchten, können Sie den login_enqueue_scriptsHaken verwenden.
  • Sie können den Link hinter dem Logo auch durch den login_headerurlFilter ersetzen, der die URL filtert. Der Link titlekann mit ersetzt werden login_headertitle. Sowohl Trigger für Multisite- als auch Single-Site-Setups.
  • Die Anmeldemeldung kann über den login_messageFilter geändert werden .
Kaiser
quelle
6

Mit diesem Code können Sie den Benutzer automatisch anmelden:

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
quelle
Wäre noch cooler, wenn Sie nicht die ID nehmen, sondern den Benutzer beim Namen bekommen würden. +1 sowieso.
Kaiser
2
Du kannst! get_user_by( 'login', 'demo' );
SickHippie
1
Wäre der initHaken nicht genug? Es ist überall vorhanden ...
Kaiser
3

Hier sind 3 Möglichkeiten, dies zu tun:

Der erste Weg ist die Verwendung des Hooks 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();
}

Die zweite Möglichkeit besteht darin, jQuery zu verwenden .val()und es Ihrer Anmeldeseite hinzuzufügen

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

Die letzte Möglichkeit besteht darin, Ihre wp-login.phpDatei zu bearbeiten (Hinweis, dies wird nicht empfohlen, obwohl es funktionieren würde).

Brooke.
quelle
1) würde einen Ersatz für die gesamte Datei wp-login.php benötigen - Wie würden Sie das tun (ernsthafte Frage - ich bin interessiert)? Regeln neu schreiben, damit Ihre Vorlage stattdessen ausgelöst wird? 2) ist gültig, würde aber jQuery benötigen und in einen jQuery( document ).ready( function( $ )Aufruf eingebunden sein , um $verfügbar zu machen und die Funktion zu funktionieren. Sie müssten auch jQuerynur dafür anrufen . 3) Ok, gut ... Sagen wir einfach nichts darüber :)
Kaiser
1) Ich bin mir nicht sicher, ich war meistens Brainstorming, habe es nie getan. wie für 2) es sieht so aus, als ob jquery bereits auf meiner Anmeldeseite geladen ist. Ich war auch faul und wickelte mein Beispiel nicht in jQuery(document...Tags ein. 3) Es ist nie passiert.
Brooke.