WordPress : Créer un nouveau champ personnalisé utilisateur non enregistré

Publié par Jean-Michel le

J’ai ajouté une fonction à mon thème enfant pour ajouter un nouveau champ dans la section Ajouter un nouvel utilisateur afin que vous puissiez sélectionner si le membre est juste un membre ou un candidat, etc. :

function show_extra_profile_fields( $user ) {
    $previous_value = '';
    if( is_object($user) && isset($user->ID) ) {
        $previous_value = get_user_meta( $user->ID, 'membership', true );
    }
    ?>
<hr>
    <h2>Membership Status</h2>
    <table class="form-table">
        <tr>
            <th><label for="membership">Membership</label></th>
            <td>
                <select name="membership" id="membership" style="width:150px;">
                    <option value="Member" <?php selected( 'Member', get_the_author_meta( 'membership', $user->ID ) ); ?>>Member</option>
                    <option value="Candidate" <?php selected( 'Candidate', get_the_author_meta( 'membership', $user->ID ) ); ?>>Candidate</option>
                </select>
            </td>
        </tr>
    </table>
<hr>
<?php }

add_action( 'show_user_profile', 'show_extra_profile_fields' );
add_action( 'edit_user_profile', 'show_extra_profile_fields' );
add_action( "user_new_form", "show_extra_profile_fields" );

Et ma fonction de sauvegarde :

function save_extra_profile_fields( $user_id ) {
    # save choice
    if( isset($_POST['membership']) ) {
        update_user_meta( $user_id, 'membership',  $_POST['membership'] );
    }
}

add_action( "user_new_form", "save_extra_profile_fields" );
add_action( 'personal_options_update', 'save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_profile_fields' );

Mon problème est qu’une fois que je clique sur créer, cela n’enregistre pas l’option que j’ai sélectionnée dans la zone de sélection. Il enregistre une fois que j’entre dans l’utilisateur, puis le change à nouveau.

Qu’est-ce que j’ai pu manquer qui me pousse à choisir de ne pas économiser sur la création ?

Solution n°1 trouvée

Essayez d’accrocher votre fonction de sauvegarde à user_register, car il se peut que la fonction que $user_idvous avez dans votre fonction n’existe pas encore, il n’y a donc pas d’utilisateur auquel attacher la méta.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *