Je souhaite ajouter un champ de confirmation email lors du processus d’inscription d’un utilisateur.
Il existe de nombreux plugins pour customiser les champs a l’inscription en front-end WordPress. Mais pour un ou deux champs avec une logique de validation simple, je préfère utiliser un peu de code à mettre dans un plugin ou dans le functions.php. Plutôt que de prendre un plugin qui risque d’alourdir pour pas grand chose mon WordPress.
A ce sujet la doc WordPress est très bien faite: https://codex.wordpress.org/Customizing_the_Registration_Form
Mais… Avec BuddyPress cela ce passe différemment. En effet BuddyPress surcharge complètement le mécanisme d’inscription natif de WordPress. Voici comment faire:
Tout d’abord, créer un child theme, puis surcharger le fichier:
buddypress/members/register.php
Les champs de base de WordPress sont gérés autour des lignes 70 de ce Template.
email errors. * * @since BuddyPress (1.1.0) */ do_action( 'bp_signup_email_errors' ); ?> /> /** * Fires and displays any member registration email confirmations errors. * */
Ensuite il reste ces quelques fonctions pour gérer les erreurs et l’affichage du mail de confirmation:
add_action( 'bp_signup_validate', function() {
$bp = buddypress();
if ( strcmp( $_POST['signup_email_confirm'], $_POST['signup_email'] ) !== 0 ) {
$bp->signup->errors['signup_email_confirm'] = __( 'Les deux email ne correspondent pas.', 'lang-bp-confirm-email' );
}
});
function bp_signup_email_confirm_value() {
echo bp_get_signup_email_confirm_value();
}
function bp_get_signup_email_confirm_value() {
$value = '';
if ( isset( $_POST['signup_email_confirm'] ) ) {
$value = $_POST['signup_email_confirm'];
}
return $value;
}
