Como preencher previamente os campos de nome de usuário / senha na página de login


8

Para um ambiente de demonstração, eu gostaria de preencher previamente os campos de nome de usuário e senha do formulário wp-login com as cadeias "demo" e "demo", respectivamente.

Assim, os usuários precisam apenas clicar no botão "Login" para se conectar à área de administração.

Existe uma maneira de fazer isso ? Talvez com um gancho?

Obrigado por seus conselhos

Respostas:


6

O resultado

insira a descrição da imagem aqui

Nome do usuário

Você pode declarar o valor do campo do formulário global e preenchê-lo.

Isso substituirá qualquer configuração feita através da caixa de seleção "Lembrar-me".

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

Senha

Não encontrei nada que você possa usar para preenchê-lo, então eu adicionaria uma nota. Felizmente / Infelizmente, existe todo o conjunto de folhas de estilo para a interface do usuário do administrador disponível. Então, .wrapem conexão com h2dá um estilo agradável. A função está ligada ao gancho de campos adicionais do gancho de administrador. A prioridade é 0configurá-lo acima dos campos adicionais.

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

Segurança: Ocultar erros

Como alguém obteria uma prova visual de que ele inseriu um nome de usuário existente por padrão, eu adicionaria o seguinte ao seu arquivo functions.php, para evitar dizer se o nome de usuário foi adivinhado corretamente:

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

Outros filtros

Notas:

  • Se você deseja substituir outras coisas, como estilos, use o login_enqueue_scriptsgancho.
  • Você também pode substituir o link atrás do logotipo usando o login_headerurlfiltro que filtra o URL. O link titlepode ser substituído usando login_headertitle. Ambos são acionados para configurações de vários sites e para um único site.
  • A mensagem de login pode ser alterada usando o login_messagefiltro.

6

você pode usar esse código para efetuar login automaticamente no usuário:

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

Seria ainda mais legal se você não pegasse o ID, mas obtenha o usuário pelo nome. +1 de qualquer maneira.
kaiser

2
Você pode! get_user_by( 'login', 'demo' );
SickHippie

11
O initgancho não seria suficiente? Ela está presente em todos os lugares ...
kaiser

3

Aqui estão três maneiras de fazer isso:

A primeira maneira é usar o gancho 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();
}

A segunda maneira, é usar o jQuery .val()e adicioná-lo à sua página de login

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

A última maneira é editar seu wp-login.phparquivo (observe que isso não é recomendado, embora funcione).


1) precisaria de uma substituição para todo o arquivo wp-login.php - Como você faria isso (Q sério - Estou interessado)? Reescreva as regras para que seu modelo seja acionado? 2) é válido, mas precisaria do jQuery e seria envolvido em uma jQuery( document ).ready( function( $ )chamada para $disponibilizar e a função funcionando. Você também precisa ligar jQueryapenas para isso. 3) Ok, bem ... vamos apenas dizer nada sobre isso :)
kaiser

1) Eu não tenho certeza, eu estava quase sempre invadindo o cérebro. quanto a 2) parece que o jquery já está carregado na minha página de login. Eu também estava sendo preguiçoso e não empacotando meu exemplo em jQuery(document...tags. 3) Isso nunca aconteceu.
Brooke.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.