¿Cómo agregar un campo en el perfil de Usuarios? Por ejemplo, país, edad, etc.
No soy muy bueno con las computadoras/códigos, etc. Uso un plugin que crea un formulario de registro y en ese formulario agregué país, grupo de edad, género y más. Seleccioné la opción que agregará al registrado en la sección de usuarios de WordPress. Pero cuando lo pruebo, solo el nombre de usuario y el correo electrónico aparecen en la sección de Usuarios en el backend.. ¿Hay alguna forma de que los otros campos se muestren en la sección de usuarios?
Necesito que se muestren para usos estadísticos.

Necesitas usar los hooks show_user_profile
, edit_user_profile
, personal_options_update
y edit_user_profile_update
.
Puedes usar el siguiente código para agregar campos adicionales en la sección de Usuario
Código para agregar campos extra en 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("Información adicional del perfil", "blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="address"><?php _e("Dirección"); ?></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("Por favor ingresa tu dirección."); ?></span>
</td>
</tr>
<tr>
<th><label for="city"><?php _e("Ciudad"); ?></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("Por favor ingresa tu ciudad."); ?></span>
</td>
</tr>
<tr>
<th><label for="postalcode"><?php _e("Código Postal"); ?></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("Por favor ingresa tu código postal."); ?></span>
</td>
</tr>
</table>
<?php }
Código para guardar los detalles de los campos extra en la base 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 ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-user_' . $user_id ) ) {
return;
}
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 varios artículos disponibles sobre el tema que podrían ser útiles:

Esto no está almacenando datos de mis campos adicionales en la BD. ¿Alguna sugerencia? Gracias.

@b_dubb, ¿Podrías compartir tu código? Así lo revisaré y te haré saber.

Deberías agregar verificación de nonce para evitar introducir vulnerabilidades de seguridad. https://developer.wordpress.org/themes/theme-security/using-nonces/

@KittMedia El nonce ya está verificado por check_admin_referer que es llamado desde user-edit.php antes de que se ejecuten estos hooks.

El plugin Advanced Custom Fields Pro te permitirá agregar campos a los perfiles de usuario sin necesidad de codificación.

Sí, definitivamente es posible programar esto en PHP sin ACF si lo prefieres. Mi experiencia es que requiere más de 100 líneas de código y debes preocuparte por la verificación de nonce, escribir el HTML del formulario, etc. Podría tomar unas horas de codificación frente a 5-10 minutos de configuración en ACF. Probablemente depende de si ya estás usando ACF Pro en un proyecto.

También puedes agregar fácilmente campos adicionales a la sección existente "Información de contacto" en la pantalla de edición del perfil de usuario, y no requiere la configuración de otros hooks para actualizar los campos meta.
function custom_user_profile_contact_fields( $methods ) {
$methods['phone'] = 'Número de teléfono';
$methods['location'] = 'Ubicación';
return $methods;
}
add_action( 'user_contactmethods', 'custom_user_profile_contact_fields' );
