WordPress: creare una pagina di registrazione personalizzata
Come creare una pagina di registrazione personalizzata in WordPress.
Creare una pagina di registrazione personalizzata in WordPress significa di fatto creare un nuovo utente all'interno del CMS. La procedura è relativamente semplice.
Creiamo un nuovo template di pagina con un form contenente un campo nascosto. Tale campo ha lo scopo di segnalarci che il form è stato inviato:
<?php
// Routine di registrazione
?>
<?php
/**
Template Name: Registrazione
*/
get_header(); ?>
<div id="primary" class="site-content">
<div id="content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php endwhile; // fine del loop. ?>
<form action="<?php global $post; echo get_permalink($post->ID); ?>" method="post">
<div>
<label for="username">Username</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="email">E-mail</label>
<input type="text" name="email" id="email" />
</div>
<div>
<label for="password">Password</label>
<input type="password" name="password" id="password" />
</div>
<input type="hidden" name="sent" value="true" />
<p><input type="submit" name="submit" id="submit" value="Iscriviti" /></p>
</form>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
La routine di registrazione creerà un utente di tipo subscriber e lo reindirizzerà alla pagina di login:
<?php
// Routine di registrazione
if(isset($_POST['sent']) && $_POST['sent'] == 'true') { // il form è stato inviato ?
// Qui potete eseguire la validazione dei dati
$password = $_POST['password'];
$username = $_POST['username'];
$email = $_POST['email'];
// Crea un nuovo utente WordPress
wp_insert_user(array(
'user_pass' => $password,
'user_login'=> $username,
'user_email' => $email,
'role' => 'subscriber')
);
$login = wp_login_url(); // URL della pagina di login
wp_redirect($login); // Reindirizza l'utente
exit();
}
?>
Il cuore del codice è costituito dalla funzione wp_insert_user(). Come si noterà dalla documentazione, questa funzione accetta molti parametri ma quelli obbligatori sono la password, lo username, l'e-mail ed il ruolo utente. La password non deve essere in alcun modo criptata perché a questo penserà WordPress. Inoltre la password non deve contenere alcuni caratteri speciali, come ad esempio il backslash (\).