¿Cómo Agregar Campos Personalizados al Perfil de Usuario?

14 nov 2010, 06:34:13
Vistas: 34.4K
Votos: 30

La página de perfil de usuario tiene los siguientes campos:

Nombre de usuario
Nombre
Apellido
Apodo
Nombre para mostrar
Información de contacto
Correo electrónico
Sitio web
AIM
Yahoo IM
Jabber / Google Talk

¿Cómo se pueden agregar más campos a esta sección? Campos como número de teléfono, dirección u otros datos adicionales.

0
Todas las respuestas a la pregunta 2
3
39

Necesitas usar los hooks 'show_user_profile', 'edit_user_profile', 'personal_options_update' y 'edit_user_profile_update'.

Aquí tienes un código para agregar un número de Teléfono:

add_action( 'show_user_profile', 'yoursite_extra_user_profile_fields' );
add_action( 'edit_user_profile', 'yoursite_extra_user_profile_fields' );
function yoursite_extra_user_profile_fields( $user ) {
?>
  <h3><?php _e("Información adicional del perfil", "blank"); ?></h3>
  <table class="form-table">
    <tr>
      <th><label for="phone"><?php _e("Teléfono"); ?></label></th>
      <td>
        <input type="text" name="phone" id="phone" class="regular-text" 
            value="<?php echo esc_attr( get_the_author_meta( 'phone', $user->ID ) ); ?>" /><br />
        <span class="description"><?php _e("Por favor ingresa tu teléfono."); ?></span>
    </td>
    </tr>
  </table>
<?php
}

add_action( 'personal_options_update', 'yoursite_save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'yoursite_save_extra_user_profile_fields' );
function yoursite_save_extra_user_profile_fields( $user_id ) {
  $saved = false;
  if ( current_user_can( 'edit_user', $user_id ) ) {
    update_user_meta( $user_id, 'phone', $_POST['phone'] );
    $saved = true;
  }
  return true;
}

Ese código agregará un campo a tu pantalla de usuario que se verá algo así:

Ejemplo de campo de teléfono en perfil de usuario

También hay varios artículos disponibles sobre el tema que podrían ser útiles:

O si prefieres no hacerlo tú mismo, hay plugins que agregan dichas características como los siguientes (aunque seguro hay otros):

14 nov 2010 06:52:53
Comentarios

Mike, tuve muchos problemas para guardar mis modificaciones. Finalmente lo resolví cuando hice un "buscar y reemplazar" completo. Para referencia futura, ¿los campos "name" y "title" deben coincidir exactamente?

Jonathan Wold Jonathan Wold
28 mar 2011 19:43:47

@Jonathan Wold - "¿los campos "name" y "title" deben coincidir exactamente?" No me diste suficiente contexto para saber cómo responder. Y quizás quieras crear una pregunta completamente nueva.

MikeSchinkel MikeSchinkel
29 mar 2011 10:26:02

@MikeSchinkel Cimy User Extra Fields no es una buena recomendación en mi opinión. El soporte no está realmente disponible y el código es... bueno.

kaiser kaiser
26 ago 2011 01:07:47
0
// eliminar aim, jabber, yim 
function hide_profile_fields( $contactmethods ) {
    unset($contactmethods['aim']);
    unset($contactmethods['jabber']);
    unset($contactmethods['yim']);
    return $contactmethods;
}

// agregar otros campos
function my_new_contactmethods( $contactmethods ) {
    //agregar Cumpleaños
    $contactmethods['birthday'] = 'Cumpleaños';
    //agregar Dirección
    $contactmethods['address'] = 'Dirección';
    //agregar Ciudad
    $contactmethods['city'] = 'Ciudad';
    //agregar Estado/Provincia
    $contactmethods['state'] = 'Estado/Provincia';
    //agregar Código Postal
    $contactmethods['postcode'] = 'Código Postal';
    //agregar Teléfono
    $contactmethods['phone'] = 'Teléfono';
    //agregar Teléfono Móvil
    $contactmethods['mphone'] = 'Teléfono Móvil';

    return $contactmethods;
}
add_filter('user_contactmethods','my_new_contactmethods',10,1);
add_filter('user_contactmethods','hide_profile_fields',10,1);

Espero que esto ayude.

Fuente: WPBeginner

2 dic 2010 00:06:23