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 (\
).