Comunidad de diseño web y desarrollo en internet online

Agregar y eliminar campos de perfil en Wordpress

En muchas ocasiones estamos trabajando con algún tipo de web en la que necesitamos agregar campos de perfil adicional en wordpress que por defecto nos proporciona muy poca información sobre el usuario, sólo nos brinda información directa del usuario como Nombre, Apellido, etc.

El perfil de wordpress trae por defecto tres grupos de opciones que el usuario puede completar (Nombre, Información de contacto y acerca de ti), Con el siguiente código podemos agregar otros grupos de opciones, ejemplo (Campos adicionales), para ello sólo debemos agregar la siguiente función dentro el archivo function.php y editar esta función a nuestro gusto, agregando o eliminando los campos que deseemos.

Agregar grupo de opciones al perfil de usuario


Código :

/*---------------------------------------------------*/
/* Agregar Grupo de opciones al perfil de usuario
/*---------------------------------------------------*/
add_action( 'show_user_profile', 'extended_user_profil_fields' );
add_action( 'edit_user_profile', 'extended_user_profil_fields' );
 
function extended_user_profil_fields( $user ) { ?>

<h3><?php _e("Campos Adicionales", "blank"); ?></h3>
 
<table class="form-table">
   <tr>
      <th><label for="direccion"><?php _e("Direccion"); ?></label></th>
      <td>
         <input    type="text" name="direccion" id="direccion" 
               value="<?php echo esc_attr( get_the_author_meta( 'direccion', $user->ID ) ); ?>" 
               class="regular-text" /><br />
         <span class="description"><?php _e("Inserta tu direccion."); ?></span>
      </td>
   </tr>
   <tr>
      <th><label for="ciudad"><?php _e("Ciudad"); ?></label></th>
      <td>
         <input type="text" name="ciudad" id="ciudad" 
               value="<?php echo esc_attr( get_the_author_meta( 'ciudad', $user->ID ) ); ?>" 
               class="regular-text" /><br />
         <span class="description"><?php _e("Inserta tu ciudad."); ?></span>
      </td>
   </tr>
</table>

<?php }
 
add_action( 'personal_options_update', 'save_extended_user_profil_fields' );
add_action( 'edit_user_profile_update', 'save_extended_user_profil_fields' );

//Función que guarda los cambios 
function save_extended_user_profil_fields( $user_id ) {
 
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
 
update_usermeta( $user_id, 'direccion', $_POST['direccion'] );
update_usermeta( $user_id, 'ciudad', $_POST['ciudad'] );
}

En la función anterior utilizamos los siguientes ganchos o hook de wordpress.
Todos estos hook tienen una misma función dentro de wordpress y es la de modificar los datos de perfil de usuarios en wordpress.

Este será el resultado cuando agregues la función anterior en tu archivo function.php.


Agregar y eliminar campos de perfil en wordpress


También tenemos la opción de agregar o eliminar campos de perfil de los grupos de campos que trae wordpress por defecto, cuando hablo de grupos de campos de refiero a (Nombre, Información de contacto y acerca de ti). Por ejemplo podemos querer cambiar el AIM por Google+, pues lo que debemos hacer es eliminar el AIM y agregar el campo de Google+.

Con la siguiente función agregaré tres nuevos campos al grupo información de contacto (Facebook, Twitter y LinkedIn), además eliminaré Jabber, y AIM, para lograr esto sólo debemos agregar el siguiente código en el archivo function.php:

Código :

/*---------------------------------------------------*/
/* Agregar campos adicionales al perfil de usuario
/*---------------------------------------------------*/

//Agregar nuevos campos
function extended_contact_info($user_contactmethods) {  
   $user_contactmethods = array(
      'twitter' => __('Twitter'),
      'fb' => __('Facebook'),
      'linkedin' => __('LinkedIn+')
   );  

   return $user_contactmethods;
}  
//Eliminar campos de usuarios
function remove_profil_info($removeInfo){
   unset($contactmethods['aim']);
   unset($contactmethods['jabber']);
   
        return $removeInfo;
}
add_filter('user_contactmethods', 'extended_contact_info');
add_filter('user_contactmethods', 'extended_contact_info');


Así quedará el perfil después de agregar y eliminar los campos antes mencionados.


Cómo llamar desde tu plantilla estos nuevos campos de perfil


Para hacer llamada a la información que tienen los usuarios en su perfil de wordpress, utilizamos la función the_author_meta() y get_user_meta() con estas funciones podemos llamar la información que tiene cada usuario en su perfil.

Por ejemplo llamaremos los campos que agregamos antes utilizando la función the_author_meta()pasándole como parámetro el nombre que agregamos al campo de perfil personalizado, o bien el nombre de uno de los campos de perfil que utiliza wordpress que podemos ver un listado aquí.

Utilizamos la función the_author_meta() por que estamos llamando estos datos desde la página single.php en este caso mostraremos la información del autor de la entrada.

Código :

//Muestra un enlace a la web del usuario
<a href="<?php the_author_url();?>">Pagina web</a>

//Muestra un enlace al Twitter del usuario      
<a href="https://twitter.com/<?php the_author_meta('twitter');?>" rel="Twitter">Twitter</a>

//Muestra un enlace al Facebook del usuario
<a href="https://www.facebook.com/<?php the_author_meta('fb');?>" rel="Facebook">Facebook</a>

//Muestra un enlace al LinkedIn del usuario
<a href="<?php the_author_meta('linkedin');?>" rel="LinkedIn+">Google+</a>


Conclusión


Con ayuda de la función the_author_meta() y otras funciones de wordpress que hacen referencia al perfil de usuario, podemos crear en nuestro blog una página de perfil personalizada que muestre muchos datos de los usuarios de nuestro blog, esto ya es cosa de cada uno, la imaginación que le ponga y lo que necesite cada web.

Próximamente realizaré un tutorial de como crear una pagina de perfil personalizada, donde mostraré información de los usuarios, número de entrada, número de comentarios, información de contacto etc.

Espero que le sirva de ayuda este tutorial, Saludos.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate