vendredi 25 septembre 2026

À propos

Contact

Tips

Ajouter des champs au formulaire d’inscription WordPress

Enrichissez wp-login.php?action=register avec des champs supplémentaires, validez-les et enregistrez-les au bon moment, sans extension d'adhésion complète.

Par Clément Hadrot • 27 mai 2026 • 4 min de lecture • Aucun commentaire
Ajouter des champs au formulaire d'inscription WordPress

Un club de randonnée local voulait que ses adhérents s’inscrivent directement sur le site, en renseignant en plus de l’identifiant et du courriel habituels, leur numéro de téléphone et leur groupe de niveau (débutant, confirmé, expert). Installer une extension d’adhésion complète pour ce seul besoin paraissait disproportionné : le formulaire natif de WordPress, accessible via wp-login.php?action=register, peut être enrichi directement avec trois hooks dédiés à ce cycle précis.

Afficher le champ supplémentaire

Le hook register_form permet d’injecter du HTML directement dans le formulaire natif, juste avant le bouton d’inscription :

add_action( 'register_form', function () {
    $telephone = $_POST['telephone'] ?? '';
    $niveau = $_POST['niveau'] ?? '';
    ?>
    <p>
        <label for="telephone"><?php esc_html_e( 'Téléphone', 'mon-theme' ); ?><br />
        <input type="tel" name="telephone" id="telephone" value="<?php echo esc_attr( $telephone ); ?>" class="input" /></label>
    </p>
    <p>
        <label for="niveau"><?php esc_html_e( 'Niveau de randonnée', 'mon-theme' ); ?><br />
        <select name="niveau" id="niveau">
            <option value="debutant" <?php selected( $niveau, 'debutant' ); ?>>Débutant</option>
            <option value="confirme" <?php selected( $niveau, 'confirme' ); ?>>Confirmé</option>
        </select>
    </p>
    <?php
} );

Valider les champs avant création du compte

Le filtre registration_errors permet de refuser l’inscription si un champ obligatoire est absent ou mal formé, avant même que WordPress ne crée le compte :

L'essentiel à retenir : Trois hooks pour afficher, valider et enregistrer un champ ; Le formulaire natif reste minimaliste par défaut ; Utile pour un site associatif ou communautaire léger
add_filter( 'registration_errors', function ( $erreurs, $login_normalise, $email ) {
    if ( empty( $_POST['telephone'] ) ) {
        $erreurs->add( 'telephone_manquant', __( 'Merci d’indiquer votre numéro de téléphone.', 'mon-theme' ) );
    } elseif ( ! preg_match( '/^0[1-9](\d{2}){4}$/', str_replace( ' ', '', $_POST['telephone'] ) ) ) {
        $erreurs->add( 'telephone_invalide', __( 'Le format du numéro de téléphone semble incorrect.', 'mon-theme' ) );
    }

    return $erreurs;
}, 10, 3 );

Enregistrer les champs une fois le compte créé

Une fois l’inscription validée, le hook user_register reçoit l’identifiant du nouvel utilisateur et permet d’enregistrer les champs supplémentaires en meta :

add_action( 'user_register', function ( $user_id ) {
    if ( ! empty( $_POST['telephone'] ) ) {
        update_user_meta( $user_id, 'telephone', sanitize_text_field( $_POST['telephone'] ) );
    }

    if ( ! empty( $_POST['niveau'] ) ) {
        $niveaux_valides = [ 'debutant', 'confirme' ];
        $niveau = sanitize_text_field( $_POST['niveau'] );

        if ( in_array( $niveau, $niveaux_valides, true ) ) {
            update_user_meta( $user_id, 'niveau_randonnee', $niveau );
        }
    }
} );

Autoriser l’inscription publique si nécessaire

Ce formulaire n’est accessible que si l’option « Tout le monde peut s’inscrire » est activée dans Réglages → Général, ou via la constante correspondante en base. Sans cette option, wp-login.php?action=register redirige simplement vers la page de connexion.

wp option get users_can_register
wp option update users_can_register 1

Attribuer un rôle adapté plutôt que le rôle par défaut

Par défaut, les inscriptions publiques créent des comptes avec le rôle défini dans l’option default_role, généralement subscriber. Pour ce club de randonnée, un rôle personnalisé adherent avec des capacités propres a été créé via add_role(), puis attribué explicitement lors de l’inscription plutôt que de modifier le rôle par défaut du site entier :

add_action( 'user_register', function ( $user_id ) {
    $utilisateur = new WP_User( $user_id );
    $utilisateur->set_role( 'adherent' );
} );

Enrichir le formulaire natif d’inscription plutôt que d’installer une extension d’adhésion complète garde le site léger, tant que les besoins restent simples : quelques champs, une validation, un rôle dédié.

En résumé

Trois hooks natifs, register_form, registration_errors et user_register, couvrent tout le cycle d’un formulaire d’inscription enrichi : affichage, validation et enregistrement. Cette approche reste préférable à une extension d’adhésion complète tant que les champs à ajouter restent en nombre limité et que la logique métier ne dépasse pas ce que quelques hooks peuvent raisonnablement porter.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi