Ajouter des champs personnalisé à l’inscription Worpress dans un context buddypress

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;
}