✅Los Usuarios Editan sus Datos desde el Front End | WordPress

Seguimos personalizando WordPress y hoy te traigo una solución eficaz para la gestión de perfiles de usuario en entornos WordPress. Diseñado como una función que se integra fácilmente mediante un shortcode, ofrece un formulario de edición de perfiles seguro y personalizable.

Su utilidad se manifiesta en escenarios donde la interactividad del usuario es clave, permitiendo actualizaciones de datos esenciales como nombres, roles y descripciones.

Además, la implementación cuidadosa de funciones de saneamiento garantiza la seguridad de las operaciones, convirtiéndolo en una herramienta confiable para comunidades en línea, sitios de membresía y plataformas colaborativas en WordPress.

Los usuarios editan sus datos front end wordpress

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.

<?php

// Función para mostrar y procesar el formulario de edición de perfil
function mostrar_formulario_perfil() {
    ob_start(); // Inicia el almacenamiento en búfer de salida

    // Verifica si el usuario está autenticado
    if (is_user_logged_in()) {
        // Obtiene los datos del usuario actual
        $current_user = wp_get_current_user();
		

        // Procesa el formulario si se ha enviado
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['actualizar_perfil'])) {
            // Actualiza los datos del usuario
            $user_id = $current_user->ID;

            // Actualiza campos personalizados
            update_user_meta($user_id, 'first_name', sanitize_text_field($_POST['first_name']));
            update_user_meta($user_id, 'last_name', sanitize_text_field($_POST['last_name']));
            update_user_meta($user_id, 'user_url', esc_url($_POST['user_url']));
            update_user_meta($user_id, 'user_email', sanitize_email($_POST['user_email']));
            update_user_meta($user_id, 'description', esc_textarea($_POST['description']));
			
			
			
            // Actualiza el rol del usuario (asegúrate de validar y sanear adecuadamente)
            $user_role = sanitize_text_field($_POST['user_role']);
            if (in_array($user_role, wp_roles()->role_names)) {
                wp_update_user(array('ID' => $user_id, 'role' => $user_role));
            }

            echo '<p class="perfil-actualizado">Perfil actualizado correctamente.</p>';
        }

        // Muestra el formulario de edición de perfil
        ?>

        <form method="post" action="">
            <div> <?php
            // Muestra el avatar del usuario
            echo get_avatar($current_user->ID, 96);
            ?>
			</div>
			<label for="first_name"><b>Nombre</b></label>
			<input type="text" name="first_name" value="<?php echo esc_attr($current_user->first_name); ?>" required>

            <label for="last_name"><b>Apellidos</b></label>
            <input type="text" name="last_name" value="<?php echo esc_attr($current_user->last_name); ?>" required>

            <label for="user_url"><b>Página Web</b></label>
            <input type="url" name="user_url" value="<?php echo esc_url($current_user->user_url); ?>">

            <label for="user_email"><b>Email</b></label>
            <input type="email" name="user_email" value="<?php echo esc_attr($current_user->user_email); ?>" required>

           <label for="user_role"><b>Rol</b></label>
            <select name="user_role">
                <?php
                $current_role = reset($current_user->roles); // Obtiene el primer rol asignado al usuario
                foreach (wp_roles()->role_names as $role => $label) {
                    echo '<option value="' . esc_attr($role) . '" ' . selected($role, $current_role, false) . '>' . esc_html($label) . '</option>';
                }
                ?>
            </select>

            <label for="description"><b>Biografía</b></label>
            <textarea name="description"><?php echo esc_textarea($current_user->description); ?></textarea>

            <input type="submit" name="actualizar_perfil" value="Actualizar Perfil">
        </form>
        <?php

    } else {
        // Si el usuario no está autenticado, muestra un mensaje de inicio de sesión
        echo '<p>Debes iniciar sesión para ver y editar tu perfil.</p>';
    }

    return ob_get_clean(); // Devuelve el contenido almacenado en búfer de salida
}

// Registra el shortcode
add_shortcode('editar_perfil', 'mostrar_formulario_perfil');
Lenguaje del código: HTML, XML (xml)

Entendiendo el código:

Desglosemos el código para ver que es lo que hace:

  1. Inicio del búfer de salida: Se utiliza ob_start() para iniciar el almacenamiento en búfer de salida. Este enfoque permite capturar la salida generada por la función y manipularla antes de enviarla al navegador.
  2. Verificación de autenticación del usuario: Se emplea is_user_logged_in() para determinar si el usuario está autenticado en WordPress.
  3. Obtención de datos del usuario actual: Mediante wp_get_current_user(), se obtienen los datos del usuario actual, como nombre, apellidos, URL, email, etc.
  4. Procesamiento del formulario cuando se envía: Se verifica si el formulario ha sido enviado usando el método POST y si se ha solicitado la actualización del perfil (actualizar_perfil). En caso afirmativo, se actualizan los metadatos del usuario en la base de datos.
  5. Mostrando el formulario de edición de perfil: Se genera un formulario HTML con campos para editar diversos atributos del perfil. Se utilizan funciones de WordPress como get_avatar, esc_attr, esc_url, esc_textarea, wp_roles, etc., para garantizar la seguridad y validación de los datos mostrados.
  6. Manejo para usuarios no autenticados: Si el usuario no está autenticado, se presenta un mensaje indicando que es necesario iniciar sesión para acceder y editar el perfil.
  7. Finalización del búfer de salida y retorno del contenido: Se utiliza ob_get_clean() para obtener y limpiar el contenido almacenado en el búfer de salida. Esto permite que el contenido generado dinámicamente sea devuelto para su inclusión en la ubicación donde se llamó la función.
  8. Registro del shortcode: Se registra el shortcode editar_perfil mediante add_shortcode, asociándolo con la función mostrar_formulario_perfil. Esto permite que el formulario de edición de perfil sea invocado en el contenido de las páginas o entradas de WordPress mediante el shortcode.

En conclusión, este código PHP emerge como una solución valiosa para la gestión de perfiles de usuario en entornos WordPress, proporcionando un formulario de edición seguro y eficiente. Su capacidad para adaptarse a diversos casos de uso, desde comunidades en línea hasta sitios de membresía, demuestra su versatilidad. La inclusión sencilla mediante shortcode y las medidas de seguridad implementadas refuerzan su utilidad, ofreciendo a los administradores y usuarios una herramienta intuitiva y confiable para personalizar y gestionar perfiles.

Si necesitas adaptar el código a las necesidades de tu proyecto o agregar una funcionalidad específica a tu página web no dudes en contactar conmigo.

Nos vemos en el siguiente tutorial.

Un saludo.

5/5 - (3 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    Deja tus opiniones o dudas en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0%