Formulario de inicio de sesión personalizado
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?

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 consite_url()
(consulta el codex para más información sobresite_url()
). El método debe establecerse comopost
.- 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.

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

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(); ?


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.

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>
