Cómo agregar campos personalizados al perfil de usuario de WordPress

WordPress nos da la opción de permitir que los usuarios se registren en nuestro sitio (en Ajustes => Generales => Cualquiera puede registrarse).

registration form

Por defecto sólo pide dos campos básicos: “Nombre de Usuario” y “Correo electrónico”. Vamos a ver cómo agregar campos personalizados al perfil de usuario tanto en el formulario de registro cómo en la administración de usuarios en el back-end, por si somos nosotros mismos los que queremos dar de alta usuarios manualmente desde el panel de control.

Para la gestión de usuarios WordPress utiliza dos tablas en la base de datos wp_users (para la información básica) y wp_usermeta (para datos adicionales). Es en ésta última tabla donde se almacenará nuestra información adicional.

Lo primero que hay que entender es cómo y dónde se maneja la información relativa a los usuarios. WordPress gestiona usuarios en diferentes pantallas, y en todas ellas vamos a ver cómo agregar, validar y guardar los nuevos campos personalizados al perfil de usuario:

  • Front-end: Formulario de registro (action: register_form)
  • Back-end: Tu perfil (action: show_user_profile)
  • Back-end: Editar usuario (action: edit_user_profile)
  • Back-end: Añadir nuevo usuario: WordPress no dispone de ningún action, veremos cómo incluirlo mediante jQuery

Vamos a verlo todo con un ejemplo práctico dónde agregaremos los campos población, provincia y teléfono al perfil de usuario de WordPress.

formulario registro

 

Agregar campos personalizados al perfil de usuario en el formulario de registro del front-end:

Añadiremos 3 funciones en nuestro archivo functions.php, la primera para añadir los campos al formulario de registro, la segunda para validar los datos y la tercera para guardarlos.

 

Agregar campos personalizados al perfil de usuario en el back-end (Tu perfil y Editar usuario):

Vamos a utilizar dos actions: show_user_profile y edit_user_profile, para añadir nuestros campos personalizados al perfil de usuario. Como antes, vamos a crear una función para agregar los campos al formulario de Tu perfil y Editar usuario, y reutilizaremos la función creada anteriormente (save_user_fields()) para guardar los datos:

 

Agregar campos personalizados al perfil de usuario en el back-end (Añadir Nuevo Usuario):

Ésta parte tiene un poco más de miga porque WordPress no dispone a día de hoy de ningún action para introducir nuestros campos personalizados en el formulario de Añadir Nuevo Usuario.

¿Qué alternativas tenemos? Añadiremos nuestros campos mediante jQuery. Crearemos al final de la tabla unas nuevas filas con los inputs correspondientes de nuestros campos. Podemos crear un archivo js en una carpeta “/js” dentro de nuestro tema, cargarlo en el back-end de la siguiente manera:

Y en nuestro archivo “custom-users-fields.js” agregamos éstas líneas:

Para el guardado de nuestros datos no hace falta crear ninguna función adicional ya que nos vale con el action que hemos utilizado antes: add_action(‘user_register’, ‘save_user_fields’);

Nota

Si deseamos que uno de estos campos sea obligatorio, basta con añadir la clase form-required al <tr> de nuestro campo, como en nuestro ejemplo hemos hecho con el campo Población.

Si te ha gustado, valora este artículo para mejorar la calidad del blog o compártelo en Redes Sociales…
1 Star2 Stars3 Stars4 Stars5 Stars (2 votos, valoración 5,00 sobre 5) Loading...

Web Hosting
  • Juan C Boly

    gracias por compartirlo. He seguido los pasos pero no logro que el nuevo usuario reciba el mail para acceder al sitio…
    puedes indicarme qué estoy haciendo mal o bien los errores mas comunes para mi caso…gracias

  • Alejandro

    Hola buen post. Tengo el siguiente problema, yo quisiera que la informacion que aparece en el registro cuando un usuario la ingresa se escriba en la tabla wp_users y no en la tabla wp_usermeta.
    Lo digo porque uso el plugin new_user_approve que le envia al administrador del sitio la informacion del usuario que se quiere registrar para que este le de o no autorizacion, peroesa informacion que recibe el admin esta en la tabla wp_users, es decir toda la informacion generada en el formulario de este post no le llegaria al admin en su correo solo el nombre y email del nuevo usuario.
    Espero me ayuden. Saludos

    • Hola Alejandro

      Lo primero que te diría es que mires a ver si ese plugin que comentas tiene algun hook que te permita intervenir y añadir la información del usuario que necesitas y que está almacenada en user_meta.

      En caso de que lo que necesitas sea sólo modificar la información del usuario que WordPress almacena en la tabla users, echa un vistazo a la función wp_update_user() https://codex.wordpress.org/Function_Reference/wp_update_user