Comment ajouter un champ dans le profil des utilisateurs?Par exemple, pays, âge, etc.
-
-
Veuillezessayernotre recherche.Voustrouverez des dizaines d'exemples.Please try our search. You will find dozens of examples.
- 5
- 2016-01-16
- fuxia
-
3 réponses
- votes
-
- 2016-01-16
Vous devez utiliser les hooks
show_user_profile
,edit_user_profile
,personal_options_update
etedit_user_profile_update
.Vouspouvez utiliser le code suivantpour ajouter des champs supplémentaires dans la section Utilisateur
Codepour 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 }
Codepourenregistrer les détails des champs supplémentaires dans labase 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'] ); }
Ilexiste égalementplusieurs articles deblog disponibles sur le sujet quipourraient être utiles:
You need to use the
show_user_profile
,edit_user_profile
,personal_options_update
, andedit_user_profile_update
hooks.You can use the following code for adding additional fields in User section
Code for adding extra fields in Edit User Section:
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 for saving extra fields details in database:
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'] ); }
There are also several blog posts available on the subject that might be helpful:
-
Bravo celafonctionnetrèsbien.Bravo this works great.
- 0
- 2018-03-15
- AVEbrahimi
-
Celane stockepas les données demes champs supplémentaires dans labase de données.Suggestions s'il vousplaît?THX.This isn't storing data from my extra fields in the DB. Suggestions please? Thx.
- 1
- 2019-07-03
- b_dubb
-
@b_dubb,pouvez-vous s'il vousplaîtpartager votre code?Alorsje vais vérifieret vous lefaire savoir.@b_dubb, Can you please share your code? So i'll check and let you know.
- 0
- 2019-08-02
- Arpita Hunka
-
J'ai résolumonproblème,maismerci dem'avoir contacté.I have resolved my issue but thanks for reaching out.
- 0
- 2019-08-05
- b_dubb
-
Vous devez ajouter une vérificationnonce à celapour éviter d'introduire des vulnérabilités de sécurité.https://developer.wordpress.org/themes/theme-security/using-nonces/You should add nonce verification to this to avoid introducing security vulnerabilities. https://developer.wordpress.org/themes/theme-security/using-nonces/
- 1
- 2020-01-30
- squarecandy
-
- 2017-09-20
Leplugin Advanced Custom Fields Pro vouspermettra d'ajouter des champs auxprofils utilisateur sans aucun codage.
The Advanced Custom Fields Pro plugin will allow you to add fields to user profiles without any coding.
-
Seulement la versionproOnly the pro version
- 3
- 2019-03-04
- I am the Most Stupid Person
-
Ilexiste desmoyensgratuits defaire cela avec PHP.There are free ways of doing this with PHP.
- 2
- 2019-10-15
- Drmzindec
-
Oui - certainementpossible de coder cecien PHP sans ACF si vouspréférez.Monexpérienceest que celaprendplus de 100 lignes de codeet que vous devez vous soucier de la vérificationnonce,de l'écriture du HTML duformulaire,etc. Celapourraitprendre quelques heures de codage contre 5 à 10min de configuration dans ACF.Cela dépendprobablement si vous utilisez déjà ACF Pro sur unprojet.Yep - definitely possible to code this in PHP without ACF if you prefer. My experience is that it takes 100+ lines of code and you need to worry about nonce verification, writing the HTML of the form, etc. Could take a few hours of coding vs. 5-10 min of setup in ACF. Probably depends on if you're using ACF Pro already on a project.
- 0
- 2019-10-15
- squarecandy
-
Wordpress devrait lefaire sans vous demander de coderen dur lesformulaires htmlen php.Je seconde ACF,ça devraitfairepartie dunoyau.Vouspouvez également définir des champs avec du codeet le version.Wordpress should do this without asking you to hardcode html forms in php. I second ACF, it should be part of the core. You can also define fields with code and version it.
- 2
- 2020-01-30
- marek.m
-
- 2018-12-04
Vousferiezmieux d'utiliser
get_user_meta
(au lieu deget_the_author_meta
):function extra_user_profile_fields( $user ) { $meta = get_user_meta($user->ID, 'meta_key_name', false); }
You'd better use
get_user_meta
(instead ofget_the_author_meta
):function extra_user_profile_fields( $user ) { $meta = get_user_meta($user->ID, 'meta_key_name', false); }
-
les deuxfonctionnent sansproblème!both works with no problems!
- 0
- 2020-08-18
- Fernando Baltazar
Jene suispastrès doué avec les ordinateurs/codes,etc. J'utilise unplugin qui crée unformulaire d'inscriptionet sous cetteforme,j'ai ajouté lepays,latranche d'âge,le sexe,etc.Je clique sur l'option qui ajoutera l'enregistreur dans letruc de l'utilisateur wordpress.Mais lorsqueje l'essaye,seuls lenom d'utilisateuret l'e-mail s'affichent dans la section Utilisateurs dubackend. Y a-t-il unmoyenpour les autres champs de s'afficher dans la section des utilisateurs?
J'en aibesoin à desfins statistiques.