ログインページのユーザー名/パスワードフィールドに事前入力する方法


8

デモ環境では、wp-loginフォームのユーザー名とパスワードのフィールドに、それぞれ「demo」と「demo」の文字列を事前入力します。

したがって、ユーザーは「ログイン」ボタンをクリックするだけで、管理領域に接続できます。

それを行う方法はありますか?多分フック付き?

あなたのアドバイスをありがとう

回答:


6

結果

ここに画像の説明を入力してください

ユーザー名

フォームフィールド値をグローバルに宣言して、事前に入力できます。

これにより、「記憶」チェックボックスで行った設定が上書きされます。

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

パスワード

事前入力に使用できるものが見つからなかったので、メモを追加します。喜んで/悲しいことに、利用可能な管理UIのスタイルシートのセット全体があります。だから、.wrapに関連して、h2素敵なスタイリングを提供します。関数は、adminフックの追加フィールドフックにフックされます。優先順位は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、URLをフィルターするフィルターを使用して、ロゴの後ろのリンクを置き換えることもできます。リンクtitleはを使用して置き換えることができますlogin_headertitle。どちらも、マルチサイトと単一サイトのセットアップをトリガーします。
  • ログインメッセージは、login_messageフィルタを使用して変更できます。

6

このコードを使用して、ユーザーを自動ログインできます。

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

IDを取得せず、代わりにユーザーを名前で取得する場合はさらに便利です。とにかく+1。
カイザー2012年

2
あなたはできる! get_user_by( 'login', 'demo' );
SickHippie

1
ないだろうinitフックは十分では?それはどこにでも存在します...
カイザー2012

3

これを行うには3つの方法があります。

最初の方法は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();
}

2番目の方法は、jQueryを使用.val()してログインページに追加することです

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

最後の方法は、wp-login.phpファイルを編集することです(ただし、機能することはお勧めしません)。


1)wp-login.phpファイル全体を置き換える必要があります-どのようにしますか(深刻なQ-興味があります)?テンプレートを代わりにトリガーするようにルールを書き換えますか?2)は有効ですが、jQueryが必要であり、jQuery( document ).ready( function( $ )呼び出しをラップして$使用可能にし、関数を機能させます。またjQuery、このためだけに呼び出す必要があります。3)OK、まあ...何も言わないでおこう:)
kaiser

1)よくわからない、私はほとんどブレインストーミングをしたことがなかった。2)については、jqueryがすでにログインページにロードされているようです。私も怠惰で、私の例をjQuery(document...タグでラップしていませんでした。3)それは決して起こらなかった。
ブルック。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.