¿Cómo agrego un campo en el perfil de usuarios?Por ejemplo, país, edad, etc.
-
-
Intentenuestrabúsqueda.Encontrarás decenas deejemplos.Please try our search. You will find dozens of examples.
- 5
- 2016-01-16
- fuxia
-
3 respuestas
- votos
-
- 2016-01-16
Necesita utilizar losganchos
show_user_profile
,edit_user_profile
,personal_options_update
yedit_user_profile_update
.Puede utilizarel siguiente códigopara agregar campos adicionalesen la sección Usuario
Códigopara agregar campos adicionalesen la sección Editar usuario:
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ódigoparaguardar detalles de campos adicionalesen labase de datos :
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'] ); }
También hay variaspublicaciones deblog disponibles sobreeltema quepueden ser útiles:
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,estofuncionamuybien.Bravo this works great.
- 0
- 2018-03-15
- AVEbrahimi
-
Estono almacena datos demis campos adicionalesen labase de datos.¿Sugerenciasporfavor?Gracias.This isn't storing data from my extra fields in the DB. Suggestions please? Thx.
- 1
- 2019-07-03
- b_dubb
-
@b_dubb,¿puedes compartirtu código?Así que comprobaré yte lo haré saber.@b_dubb, Can you please share your code? So i'll check and let you know.
- 0
- 2019-08-02
- Arpita Hunka
-
Resolvími problema,perograciaspor comunicarte.I have resolved my issue but thanks for reaching out.
- 0
- 2019-08-05
- b_dubb
-
Debe agregar la verificación denonce aestoparaevitarintroducir vulnerabilidades de seguridad.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
El complemento Advanced Custom Fields Pro lepermitirá agregar campos a losperfiles de usuario sinningúntipo de codificación.
The Advanced Custom Fields Pro plugin will allow you to add fields to user profiles without any coding.
-
Solo la versiónproOnly the pro version
- 3
- 2019-03-04
- I am the Most Stupid Person
-
Hayformasgratuitas de haceresto con PHP.There are free ways of doing this with PHP.
- 2
- 2019-10-15
- Drmzindec
-
Sí,definitivamenteesposible codificarestoen PHP sin ACF si loprefiere.Miexperienciaes que senecesitanmás de 100 líneas de código y debepreocuparsepor la verificación denonce,escribirel HTML delformulario,etc. Podríatomar algunas horas de codificaciónfrente a 5-10minutos de configuraciónen ACF.Probablemente depende de si yaestá utilizando ACF Proen unproyecto.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 debería haceresto sinpedirle que codifique losformularios htmlen php.En segundo lugar ACF,debería serparte delnúcleo.Tambiénpuede definir campos con código y versionarlo.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
Serámejor que utilice
get_user_meta
(en lugar 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); }
-
¡Ambosfuncionan sinproblemas!both works with no problems!
- 0
- 2020-08-18
- Fernando Baltazar
No soymuybueno con las computadoras/códigos,etc. Utilizo un complemento que hace que unformulario de registro sea una cosa y deesaforma agreguépaís,grupo deedad,género,etc.Hago clicen la opción que agregaráel registrador al usuario de wordpress.Pero cuando lointento,soloelnombre de usuario yel correoelectrónico semuestranen la sección Usuariosen elbackend. ¿Hay algunaforma de que los otros campos semuestrenen la sección de usuarios?
Necesito que semuestrenpara usosestadísticos.