Customizando o login / registro

Estou trabalhando em um formulário de login personalizado para o WordPress. Notei que é muito difícil alcançar o que eu queria.

Aqui está o HTML do formulário:

<form method="post" action="/wp-login.php"> 
<input type="text" name="log" id="user_login" value="" placeholder=""/>
<input type="password" name="pwd" id="user_pass" value="" placeholder=""/>
<input name="rememberme" type="checkbox" id="rememberme" value="forever" />
<a href="https://wordpress.stackexchange.com/nojs.html" class="loginbox_button form_submit" title="">
Not registered? Forgot password?
<a href="https://wordpress.stackexchange.com//questions/85267/properly-customizing-login-register-form/?action=register" class="loginbox_stdbutton" title="Register">Register <a href="https://wordpress.stackexchange.com//questions/85267/properly-customizing-login-register-form/?action=lostpassword" class="loginbox_stdbutton" title="Reset Password">Reset Password

Devido ao requisito de estilo, eu coloco o div envolve as checkboxs de input eo botão de envio é uma marca de âncora. De acordo com o documento , wp_login_form e seus ganchos não serão capazes de implementar este projeto.

Então eu segui as sugestões sobre esta questão (eu perguntei) Perfil de usuário personalizado, registro, página de login com tema e obtive algo perto de http://digwp.com/2010/12/login-register-password-code/ . Basicamente, ele permite que você coloque o formulário de login em qualquer lugar que quiser, mas ainda retorna ao wp-login.php quando enviado.

Mas tem uma grande falha. Quando o login é incorreto, ele retorna para wp-login.php . Como essa demonstração , se você clicar em “Login” sem inserir nada, ele retornará ao formulário wp-login.php padrão.

Atualmente, estou colocando o formulário acima em uma das páginas personalizadas. Eu tinha um filtro ligado a template_include e usei esse código HTML como o formulário de login. Eu só queria mudar o estilo, não estou planejando adicionar funções.

O que é necessário para implementar este design de formulário de login? Devo iniciar do wp-login.php e mudá-lo? Em caso afirmativo, como faço para começar (em termos de colocar o tema e a forma)?

Solutions Collecting From Web of "Customizando o login / registro"

Para redirect de volta ao seu formulário de login personalizado após o login falhar, tente este código:

 // hook failed login add_action('wp_login_failed', 'my_front_end_login_fail'); function my_front_end_login_fail($username){ // Get the reffering page, where did the post submission come from? $referrer = add_query_arg('login', false, $_SERVER['HTTP_REFERER']); // if there's a valid referrer, and it's not the default log-in screen if(!empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin')){ // let's append some information (login=failed) to the URL for the theme to use wp_redirect($referrer . '?login=failed'); exit; } } 

Você precisará verificar também uma senha ou login vazio – quando o formulário de login do frontend (seu formulário de login personalizado) for enviado vazio, você terminará no padrão wp-login.php novamente. Para evitar isso, adicione este código:

 add_action( 'login_head', 'my_frontend_login_no_pass_no_username' ); function my_frontend_login_no_pass_no_username(){ $referrer = add_query_arg('login', false, $_SERVER['HTTP_REFERER']); if ( (!isset($_REQUEST['user_login']) || ( isset( $_REQUEST['user_login'] ) && trim( $_REQUEST['user_login'] ) == '' ) ) || (!isset($_REQUEST['user_pass']) || ( isset( $_REQUEST['user_pass'] ) && trim( $_REQUEST['user_pass'] ) == '' ) ) ){ wp_redirect( add_query_arg('login', 'failed', $referrer) ); exit; } } 

Se você estiver interessado em um login apropriado após o registro falhar também, verifique meu blogposto sobre este tópico.