✅ Agregar un Selector de Roles al formulario de Registro | WordPress

Bienvenido al blog donde exploraremos cómo mejorar la experiencia de registro en WordPress mediante la adición de un selector de roles.

En el artículo anterior vimos como crear los roles de Profesor y Alumno simplemente agregando un snippet de código en el functons.php de nuestro tema, pues bien, en este artículo vamos a ver como agregar un selector de esos 2 roles en el formulario de registro de WordPress.

selector rol registro wordpress

Este código ofrece a los usuarios la opción de seleccionar su rol, ya sea «Alumno» o «Profesor». Vamos a sumergirnos en el código y entender cómo cada parte contribuye a esta funcionalidad mejorada.

¿Qué hace el Código?

Agregar Campo de Selección de Rol al Formulario de Registro:

function add_role_dropdown_to_registration_form() {
    ?>
    <p>
        <label for="user_role"><?php _e('Selecciona tu Rol:'); ?><br />
            <select name="user_role" id="user_role">
                <option value="alumno"><?php _e('Alumno'); ?></option>
                <option value="profesor"><?php _e('Profesor'); ?></option>
            </select>
        </label>
    </p>
    <?php
}
add_action('register_form', 'add_role_dropdown_to_registration_form');
Lenguaje del código: JavaScript (javascript)

Esta función agrega un campo de selección de roles al formulario de registro. Los usuarios pueden elegir entre «Alumno» y «Profesor». La función add_action asegura que este campo se muestre en el lugar adecuado.

Validar y Asignar el Rol Seleccionado:

function validate_user_role_registration($errors, $sanitized_user_login, $user_email) {
    if (!isset($_POST['user_role']) || empty($_POST['user_role'])) {
        $errors->add('user_role_error', __('Por favor, selecciona un rol.'));
    } else {
        $selected_role = sanitize_text_field($_POST['user_role']);
        
        // Limitar a roles específicos
        $allowed_roles = array('alumno', 'profesor');

        if (!in_array($selected_role, $allowed_roles)) {
            $errors->add('user_role_error', __('Rol no válido.'));
        }
    }

    return $errors;
}
add_filter('registration_errors', 'validate_user_role_registration', 10, 3);
Lenguaje del código: PHP (php)

Esta función valida que se haya seleccionado un rol durante el registro y que sea uno de los roles permitidos («Alumno» o «Profesor»). Limitamos las opciones a través de la matriz $allowed_roles.

Asignar el Rol Seleccionado durante el Registro:

function assign_user_role_on_registration($user_id) {
    if (isset($_POST['user_role']) && !empty($_POST['user_role'])) {
        $selected_role = sanitize_text_field($_POST['user_role']);
        $user = new WP_User($user_id);
        $user->set_role($selected_role);
    }
}
add_action('user_register', 'assign_user_role_on_registration');
Lenguaje del código: PHP (php)

Esta función asigna el rol seleccionado al usuario recién registrado utilizando la función set_role de WordPress.

El código completo que tienes que copiar y pegar en el functions.php de tu tema o en un plugin como CODE SNIPPETS sería:

// Agregar campo de selección de rol al formulario de registro
function add_role_dropdown_to_registration_form() {
    ?>
    <p>
        <label for="user_role"><?php _e('Selecciona tu Rol:'); ?><br />
            <select name="user_role" id="user_role">
                <option value="alumno"><?php _e('Alumno'); ?></option>
                <option value="profesor"><?php _e('Profesor'); ?></option>
            </select>
        </label>
    </p>
    <?php
}
add_action('register_form', 'add_role_dropdown_to_registration_form');

// Validar y asignar el rol seleccionado durante el registro
function validate_user_role_registration($errors, $sanitized_user_login, $user_email) {
    if (!isset($_POST['user_role']) || empty($_POST['user_role'])) {
        $errors->add('user_role_error', __('Por favor, selecciona un rol.'));
    } else {
        $selected_role = sanitize_text_field($_POST['user_role']);
        
        // Limitar a roles específicos
        $allowed_roles = array('alumno', 'profesor');

        if (!in_array($selected_role, $allowed_roles)) {
            $errors->add('user_role_error', __('Rol no válido.'));
        }
    }

    return $errors;
}
add_filter('registration_errors', 'validate_user_role_registration', 10, 3);

// Asignar el rol seleccionado durante el registro
function assign_user_role_on_registration($user_id) {
    if (isset($_POST['user_role']) && !empty($_POST['user_role'])) {
        $selected_role = sanitize_text_field($_POST['user_role']);
        $user = new WP_User($user_id);
        $user->set_role($selected_role);
    }
}
add_action('user_register', 'assign_user_role_on_registration');
Lenguaje del código: HTML, XML (xml)

Conclusión:

En este artículo, hemos explorado un código personalizado que mejora la experiencia de registro en WordPress al permitir que los usuarios elijan su rol desde el principio. Esto no solo proporciona flexibilidad en la segmentación de usuarios, sino que también simplifica la asignación de roles para los administradores del sitio. Al integrar este código en tu sitio, puedes personalizar la interacción de los usuarios desde el primer momento, adaptándola a tus necesidades específicas.

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%