Formulario de inicio de sesión personalizado

20 ene 2013, 21:37:33
Vistas: 38K
Votos: 10

Soy muy nuevo en WordPress. Estoy tratando de mostrar un formulario de inicio de sesión en la sección del encabezado de mi sitio web. Sin embargo, cuando miro todos los archivos en mi directorio me resulta muy abrumador y tengo miedo de tocar algo.

¿Alguien conoce buenos tutoriales sobre el tema o podría arrojar algo de luz sobre este asunto?

0
Todas las respuestas a la pregunta 4
0
18

El formulario de inicio de sesión es un simple formulario HTML que envía el nombre de usuario y contraseña a wp-login.php. Esta es la forma más sencilla de crear un formulario de inicio de sesión personalizado:

<?php
$redirect_to = '';
?>
<form name="loginform" id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="post">
<p>Usuario: <input id="user_login" type="text" size="20" value="" name="log"></p>
<p>Contraseña: <input id="user_pass" type="password" size="20" value="" name="pwd"></p>
<p><input id="rememberme" type="checkbox" value="forever" name="rememberme"> Recordarme</p>

<p><input id="wp-submit" type="submit" value="Iniciar sesión" name="wp-submit"></p>

<input type="hidden" value="<?php echo esc_attr( $redirect_to ); ?>" name="redirect_to">
<input type="hidden" value="1" name="testcookie">
</form>

Línea por línea:

  • $redirect_to: Si deseas redirigir al usuario a una página especial, inserta la URL aquí. La URL se insertará en el campo oculto al final del formulario.
  • <form ... action="...">: Los datos deben enviarse a wp-login.php. Este archivo está en la raíz de tu instalación de WordPress. Crea la URL correcta con site_url() (consulta el codex para más información sobre site_url()). El método debe establecerse como post.
  • Un campo de entrada para el nombre de usuario con id user_login
  • Un campo de entrada para la contraseña con id user_pass
  • Un campo de entrada para la casilla 'Recordarme' (opcional)
  • Un botón de envío
  • El campo oculto si el usuario debe ser redirigido después del inicio de sesión (opcional)
  • Un campo oculto para una testcookie (opcional, pero útil)

Crea un formulario y estilízalo con CSS. Eso es todo.

21 ene 2013 03:52:27
2
  1. Crea un archivo de plantilla dentro del directorio de tu tema hijo, por ejemplo login.php. Coloca el formulario de inicio de sesión dentro de este archivo:

    <form action="" method="post">
      <div>
        Nombre de usuario: <input name="log" type="text" />
      </div>
      <div>
        Contraseña: <input name="pwd" type="password" />
      </div>
      <div>
        <input type="submit" value="Iniciar sesión" />
        <input type="hidden" name="action" value="my_login_action" />
      </div>
    </form>
    

    Cambia lo que desees, pero debes dejar intactos los atributos name

  2. Crea un archivo functions.php dentro del directorio de tu tema hijo, o si ya tienes uno, edítalo. Aquí procesarás las solicitudes de inicio de sesión:

    add_action('init', function(){
    
      // ¿No es la solicitud de inicio de sesión?
      if(!isset($_POST['action']) || $_POST['action'] !== 'my_login_action')
        return;
    
      // consulta el codex para wp_signon()
      $result = wp_signon();
    
      if(is_wp_error($result))
        wp_die('Inicio de sesión fallido. ¿Contraseña o nombre de usuario incorrectos?');
    
      // redirige a la página solicitada si el inicio de sesión fue exitoso    
      header('Location: ' . $_SERVER['REQUEST_URI']);
      exit;
    });
    
  3. Crea una copia de tu plantilla header.php, colócala en la carpeta de tu tema hijo y edítala. Agrega este código donde quieras que aparezca el formulario de inicio de sesión:

    <?php
    
     if(!is_user_logged_in()){
       get_template_part('login');
     }
    
    ?>
    
20 ene 2013 22:16:08
Comentarios

Me encanta este ejemplo. ¿Qué tendría que escribir para hacer lo mismo pero con un formulario de registro en lugar de $result = wp_signon(); ?

Andrei Cristian Prodan Andrei Cristian Prodan
31 may 2013 12:33:20

wp_create_user

onetrickpony onetrickpony
31 may 2013 13:11:59
0

También puedes personalizar el formulario de inicio de sesión original en tu Tema de WordPress.

Hay algunas cosas que puedes hacer. 1) Puedes cambiar el logo de WP:

<?php
//Logo personalizado
function my_custom_login_logo() {
    echo '<style type="text/css">
        h1 a { background-image:url('.get_bloginfo('template_url').'/images/logo.png) !important; }
    </style>';
}

add_action('login_head', 'my_custom_login_logo');

// Login personalizado

function my_login_logo_url() {
    return get_bloginfo( 'url' );
}
add_filter( 'login_headerurl', 'my_login_logo_url' );
function my_login_logo_url_title() {
    return '[url]';
}
add_filter( 'login_headertitle', 'my_login_logo_url_title' );

?>

2) Puedes eliminar el efecto de sacudida del login de WP:

<?php

function my_login_head() {
    remove_action('login_head', 'wp_shake_js', 12);
}
add_action('login_head', 'my_login_head');

?>

3) Eliminar los errores de inicio de sesión:

<?php

add_filter('login_errors',create_function('$a', "return null;"));

?>

Importante: No uses todas estas partes de código en el archivo functions.php. Primero crea tres archivos con nombres que describan la función como (ej. my_custom_login_logo.php, my_login_head.php y remove_login_errors.php) y luego llama las 3 funciones en functions.php ej. require_once('includes/secure/my_custom_login_logo.php'); require_once('includes/secure/my_login_head.php'); require_once('includes/secure/remove_login_errors.php');

includes y secure son carpetas. Espero haberte ayudado. Bienvenido.

21 ene 2013 03:16:37
1

agregando códigos a wp-login.php. códigos del formulario a continuación.

    <form id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="POST">

                            <h5><strong>INICIO DE SESIÓN</strong>  <a href="uyeol.html"><i class="fa fa-gear"></i> CREAR CUENTA.</a></h5>
                            <div class="newsletter-form">

                                <div class="newsletter-email">
                                    <input id="user_login" type="text" name="grs_tcno" value="" placeholder="Usuario">
                                </div>

                                <div class="newsletter-zip">
                                    <input id="user_pass" type="password" name="grs_sifre" value="" placeholder="Contraseña">
                                </div>

                                <div class="newsletter-submit">
                                    <input id="wp-submit" type="submit" name="girisyap" value="login">
                                    <input type="hidden" value="<?php echo esc_attr( $redirect_to ); ?>" name="redirect_to">
                                      <input type="hidden" value="1" name="testcookie">
                                    <i class="icons icon-right-thin"></i>
                                </div>

                            </div>
2 ene 2019 13:40:59
Comentarios

¡Nunca es una buena idea editar los archivos principales del núcleo!

bueltge bueltge
2 ene 2019 15:37:46