13Sep 2012 0 Comments */?>

Formulario para cambiar password en WordPress

Categorías: Tips de wordpress, Wordpress - Tags:

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!!

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.

More Posts - Website

Follow Me:
TwitterFacebookLinkedInGoogle Plus