Comment ajouter un champ sur le profil des utilisateurs? Par exemple, pays, âge, etc.

21

Je ne suis pas très bon avec les ordinateurs / codes, etc. J'utilise un plugin qui rend un formulaire d'inscription quelque chose et sous cette forme, j'ai ajouté le pays, le groupe d'âge, le sexe, etc. Je clique sur l'option qui ajoutera l'enregistreur dans le truc utilisateur wordpress. Mais lorsque je l'essaye, seuls le nom d'utilisateur et l'e-mail s'affichent dans la section Utilisateurs du backend. Existe-t-il un moyen pour les autres champs de s'afficher dans la section des utilisateurs?

J'en ai besoin pour montrer à des fins statistiques.

Chloe Aus
la source
5
Veuillez essayer notre recherche. Vous en trouverez des dizaines d'exemples.
fuxia

Réponses:

58

Vous devez utiliser les show_user_profile, edit_user_profile, personal_options_updateet edit_user_profile_updatecrochets.

Vous pouvez utiliser le code suivant pour ajouter des champs supplémentaires dans la section Utilisateur

Code pour ajouter des champs supplémentaires dans la section Modifier l'utilisateur:

add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );

function extra_user_profile_fields( $user ) { ?>
    <h3><?php _e("Extra profile information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
        <th><label for="address"><?php _e("Address"); ?></label></th>
        <td>
            <input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( 'address', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your address."); ?></span>
        </td>
    </tr>
    <tr>
        <th><label for="city"><?php _e("City"); ?></label></th>
        <td>
            <input type="text" name="city" id="city" value="<?php echo esc_attr( get_the_author_meta( 'city', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your city."); ?></span>
        </td>
    </tr>
    <tr>
    <th><label for="postalcode"><?php _e("Postal Code"); ?></label></th>
        <td>
            <input type="text" name="postalcode" id="postalcode" value="<?php echo esc_attr( get_the_author_meta( 'postalcode', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your postal code."); ?></span>
        </td>
    </tr>
    </table>
<?php }

Code pour enregistrer les détails des champs supplémentaires dans la base de données :

add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

function save_extra_user_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) ) { 
        return false; 
    }
    update_user_meta( $user_id, 'address', $_POST['address'] );
    update_user_meta( $user_id, 'city', $_POST['city'] );
    update_user_meta( $user_id, 'postalcode', $_POST['postalcode'] );
}

Il existe également plusieurs articles de blog disponibles sur le sujet qui pourraient être utiles:

Arpita Hunka
la source
Bravo cela fonctionne très bien.
AVEbrahimi
1
Cela ne stocke pas les données de mes champs supplémentaires dans la base de données. Des suggestions s'il vous plait? THX.
b_dubb
@b_dubb, pouvez-vous s'il vous plaît partager votre code? Je vais donc vérifier et vous faire savoir.
Arpita Hunka
J'ai résolu mon problème, mais merci de m'avoir contacté.
b_dubb
3

Vous feriez mieux d'utiliser get_user_meta(au lieu de get_the_author_meta):

function extra_user_profile_fields( $user ) {
    $meta = get_user_meta($user->ID, 'meta_key_name', false);
}
T.Todua
la source
3

Le plugin Advanced Custom Fields Pro vous permettra d'ajouter des champs aux profils utilisateur sans aucun codage.

squarecandy
la source
3
Seule la version pro
Je suis la personne la plus stupide
Il existe des moyens gratuits de le faire avec PHP.
Johan Pretorius
Oui - certainement possible de coder cela en PHP sans ACF si vous préférez. D'après mon expérience, il faut plus de 100 lignes de code et vous devez vous soucier de la vérification de nonce, de l'écriture du code HTML du formulaire, etc. Cela pourrait prendre quelques heures de codage contre 5 à 10 minutes de configuration dans ACF. Cela dépend probablement si vous utilisez déjà ACF Pro sur un projet.
squarecandy