Formulario para cambiar password en WordPress
En este ejemplo podrán ver como crear un formulario que permita a los usuarios cambiar la contraseña de WordPress. Voy a empezar a escribir unas miniseries de artículos para crear diferentes plantillas personalizadas para utilizar en lugar de las que ofrece WordPress por defecto. De esa forma podrán crear su propio login o registro, crear posts, subir archivos ,etc.
Esto suele ser útil si están desarrollando un theme y necesitan crear secciones un poco más acordes al sitio en lugar de andar utilizando wp-login.php, o si simplemente quieren que la gente cree posts desde el front-end sin darles permisos de colaborados, autor o lo que sea.
El código que voy a pegar está extraído de un sitio en concreto, pero pueden adaptarlo a cualquier diseño o tema. Digamos que sirve para orientarse en como crear un formulario para cambiar la contraseña.
Formulario:
<div id="errors">
<?php echo $errors;?>
</div>
<form id="" name="" method="post" action="?action=cambiar-password" class="wpcf7-form">
<fieldset>
<legend>Desea cambiar su password?</legend>
<div><label for="plan"><em>*</em>Password Antiguo:</label>
<input type="password" name="old_pass" value=""/>
</div>
<div><label for="plan"><em>*</em>Nuevo Password:</label>
<input type="password" name="new_pass" value=""/>
</div>
<div><label for="plan"><em>*</em>Confirmar Nuevo Password:</label>
<input type="password" name="new_pass2" value=""/>
</div>
</fieldset>
<?php wp_nonce_field('cambiar-password','nonce'); ?>
<button id="agregar">Cambiar Password</button>
</form>
Código que cambia el pass. Tengan en cuenta de ponerlo antes del header o de cualquier HTML:
/**
* Cambiar password
*/
global $current_user;
get_currentuserinfo();
if ( isset($_GET['action']) && $_GET['action'] == 'cambiar-password' && wp_verify_nonce($_POST['nonce'],'cambiar-password') && wp_check_password($_POST['old_pass'], $current_user->user_pass, $current_user->ID) )
{
if( $_POST['new_pass'] == $_POST['new_pass2'] )
{
wp_update_user(array('ID' => $current_user->ID, 'user_pass' => $_POST['new_pass']));
wp_redirect(site_url('login'));
die();
}
else
{
$errors = 'Los passwords no coinciden';
}
}
else
{
$errors = 'El password antiguo es incorrecto';
}
Como ven comprobamos el password antiguo para ver si es correcto y si el nonce es válido. Entonces actualizamos al usuario y lo mandamos a la página de login.
Espero que les sirva de ayuda. Saludos!!
Acerca del autor
by Damián Logghe
Programador freelancer y emprendedor en sueños. Contento de ser mi jefe y poder hacer lo que me gusta. Wordpress es mi principal fuente de ingreso y me escribo tanto para ayudar como para tener una guia de memoria. Quieres contratarme? Déjame un mensaje.








Últimos Comentarios