Como faço para adicionar um campo no perfil dos usuários?Por exemplo, país, idade etc
-
-
Porfavor,tente nossapesquisa.Você vaiencontrar dezenas deexemplos.Please try our search. You will find dozens of examples.
- 5
- 2016-01-16
- fuxia
-
3 respostas
- votos
-
- 2016-01-16
Vocêprecisa usar o
show_user_profile
,edit_user_profile
,personal_options_update
eedit_user_profile_update
ganchos.Vocêpode usar o seguinte códigopara adicionar campos adicionaisna seção do usuário
códigopara adicionar camposextrasna seção Editar usuário:
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 }
códigopara salvar os detalhes de camposextrasnobanco de dados :
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'] ); }
Existemtambém váriaspostagens deblog disponíveis sobre o assunto quepodem ser úteis:
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:
-
Bravoissofuncionamuitobem.Bravo this works great.
- 0
- 2018-03-15
- AVEbrahimi
-
Issonãoestá armazenando dados dosmeus camposextrasnobanco de dados.Sugestõesporfavor?Valeu.This isn't storing data from my extra fields in the DB. Suggestions please? Thx.
- 1
- 2019-07-03
- b_dubb
-
@b_dubb,vocêpode compartilhar seu código?Entãoeu vou verificare deixar você saber.@b_dubb, Can you please share your code? So i'll check and let you know.
- 0
- 2019-08-02
- Arpita Hunka
-
Eu resolvi omeuproblema,mas obrigadopor chegar.I have resolved my issue but thanks for reaching out.
- 0
- 2019-08-05
- b_dubb
-
Você deve adicionar a verificaçãononce aissoparaevitarintroduzir vulnerabilidades de segurança.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
o avançado campospersonalizadospro pluginpermitirá que você adicione campos aosperfis do usuário sem qualquer codificação.
The Advanced Custom Fields Pro plugin will allow you to add fields to user profiles without any coding.
-
Apenas a versãoproOnly the pro version
- 3
- 2019-03-04
- I am the Most Stupid Person
-
Hámaneiras livres defazerisso com o PHP.There are free ways of doing this with PHP.
- 2
- 2019-10-15
- Drmzindec
-
Sim - definitivamentepossível codificarissono PHP sem ACF se vocêpreferir.Minhaexperiência é que énecessáriomais de 100 linhas de códigoe vocêprecisa sepreocupar com a verificaçãononce,escrevendo o HTML doformulário,etc. Poderia levar algumas horas de codificação vs. 5-10min de configuraçãono ACF.Provavelmente depende se vocêestiver usando o ACF Projáem umprojeto.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
-
O WordPress devefazerisso sempedir-lheparaformas de html hardbodeno PHP.Eu Segundo ACF,deve serparte donúcleo.Vocêtambémpode definir campos com códigoe versão.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
Émelhor você usar
get_user_meta
(em vez 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); }
-
Ambosfuncionam semproblemas!both works with no problems!
- 0
- 2020-08-18
- Fernando Baltazar
Eunão soumuitobom com computadores/códigosetc. Eu uso umplugin quefaz umaforma deinscriçãoe nessaforma adicioneipaís,faixaetária,gêneroe assimpor diante.Eu clicona opção que adicionará o registradorno usuário do WordPress.Mas quandoeutente,apenas onome de usuárioe oe-mail showna seção dos usuáriosnobackend. Existe algumamaneirapara os outros campos apareceremna seção Usuários?
Eupreciso delesparamostrarpara usosestatísticos.