¡Atención!

Este artículo contiene código PHP y está destinado a desarrolladores. Ofrecemos este código como cortesía, pero no proporcionamos soporte para personalizaciones de código o desarrollo de terceros.

Para obtener ayuda adicional, consulta el tutorial de WPBeginner sobre cómo añadir código personalizado.

Descartar

Cómo cambiar los mensajes de validación para el complemento de registro de usuarios

¿Te gustaría personalizar los mensajes de error que aparecen durante el registro de usuarios? WPForms te permite crear mensajes más útiles como “El nombre de usuario ya existe” o “El correo electrónico ya existe” para guiar a tus visitantes a través del proceso de registro.

Esta guía te mostrará cómo personalizar estos mensajes de validación usando PHP.

Configuración de tu formulario de registro

Primero, asegúrate de haber instalado el complemento User Registration para WPForms. Este complemento proporciona dos plantillas predefinidas: Formulario de inicio de sesión de usuario y Formulario de registro de usuario. Dado que nos centramos en los mensajes de registro, crea un nuevo formulario usando la plantilla de registro de usuario.

Si necesitas ayuda para crear tu formulario de registro, consulta nuestra guía sobre cómo crear formularios de registro de usuarios.

Estos formularios pueden mostrar varios tipos de mensajes de validación para ayudar a guiar a tus usuarios. Vamos a personalizar cada tipo de mensaje.

Cambiar los mensajes de validación

Para cambiar los mensajes de validación, necesitarás añadir uno de los fragmentos de código a continuación en tu sitio.

Si no estás seguro de cómo añadir código personalizado, por favor, consulta nuestra guía sobre cómo añadir fragmentos de código a tu sitio.

Mensaje de nombre de usuario ya existente

El mensaje predeterminado es Ya existe un usuario con ese nombre de usuario. Aquí te mostramos cómo personalizarlo y añadir un enlace de inicio de sesión:

/**
 * Change the User Registration Form error message for the already existing username
 *
 * @link https://wpforms.com/developers/change-validation-messages-for-user-registration-addon/
 */
function wpf_dev_user_registration_username_exists( $msg ) {
    // This is the message that would appear
    $msg = __( 'A user with that username already exists. Please <a href="http://yourdomain/wp-admin/">log in here</a> to your account.', 'text-domain' );
    return $msg;
}
add_filter( 'wpforms_user_registration_process_registration_process_username_exists_error_message', 'wpf_dev_user_registration_username_exists', 10, 1 );

Mensaje de correo electrónico ya existente

El mensaje predeterminado es Ya existe un usuario con ese correo electrónico. Aquí te mostramos cómo personalizarlo con un enlace de inicio de sesión:

/**
 * Change the User Registration Form error message for already existing email address
 *
 * @link https://wpforms.com/developers/change-validation-messages-for-user-registration-addon/
 */
function wpf_dev_user_registration_email_exists( $msg ) {
    // This is the message that would appear
    $msg = __( 'A user with that username already exists. Please <a href="http://yourdomain/wp-admin/">log in here</a> to your account.', 'text-domain' );
    return $msg;
}
add_filter( 'wpforms_user_registration_process_registration_process_user_email_exists_error_message', 'wpf_dev_user_registration_email_exists', 10, 1 );

Mensaje de contraseña incorrecta

El mensaje predeterminado es Error: La contraseña que introdujiste para el nombre de usuario es incorrecta. ¿Has olvidado tu contraseña? Aquí te mostramos cómo personalizarlo con un enlace para restablecer la contraseña:

/**
 * Password is incorrect
 *
 * @link https://wpforms.com/developers/change-validation-messages-for-user-registration-addon/
 */
function wpf_dev_user_registration_login_error( $msg ) {
    // This is the message that would appear in the email
    $msg = __('Sorry something went wrong! ', 'text-domain');
    $msg .= '<a href=\\"http://www.website.com\\">';
    $msg .= __('Would you like to reset your password?', 'text-domain');
    $msg .= '</a>';
    return $msg;
}
add_filter( 'wpforms_user_registration_process_login_process_wp_error_message', 'wpf_dev_user_registration_login_error', 10, 1 );

Al añadir URLs en PHP, necesitas escaparlas con barras dobles. Además, si cambias la URL para restablecer la contraseña, los usuarios no podrán usar la funcionalidad de restablecimiento de contraseña integrada de WordPress.

Mensajes personalizados del formulario de inicio de sesión

También puedes personalizar los mensajes para el formulario de inicio de sesión de usuario. Aquí te mostramos cómo crear un mensaje genérico para todos los formularios:

/**
 * Change the User Login Form error message
 *
 * @link https://wpforms.com/developers/change-validation-messages-for-user-registration-addon/
 */
function wpf_dev_user_registration_login_error($msg) {
    // This is the message that would appear in the email
    $msg = __( 'Sorry something went wrong! ', 'text-domain' );
    $msg .= '<a href="'.esc_url( wp_lostpassword_url() ).'">';
    $msg .= __( 'Would you like to reset your password?', 'text-domain' );
    $msg .= '</a>';
    return $msg;
}
add_filter( 'wpforms_user_registration_process_login_process_wp_error_message', 'wpf_dev_user_registration_login_error', 10, 2 );

Si estás utilizando la plantilla de restablecimiento de contraseña y quieres cambiar el mensaje de error que aparece cuando un usuario abre un enlace de restablecimiento no válido o caducado, puedes usar el fragmento de código a continuación.

/**
 * Customize the error message shown on the WPForms Password Reset form
 * when the reset link is invalid or expired.
 *
 * @link https://wpforms.com/developers/change-validation-messages-for-user-registration-addon/
 *
 * @param string $message The default error message.
 * @return string
 */
function wpf_custom_password_reset_invalid_link_message( $message ) {
    return wp_kses(
        __( '<strong>Error:</strong> Your password reset link is invalid or has expired. Please request a new link below.', 'text-domain' ),
        [ 'strong' => [] ]
    );
}
add_filter( 'wpforms_user_registration_frontend_reset_invalid_link_message', 'wpf_custom_password_reset_invalid_link_message', 10, 1 );

Mensajes de error específicos del formulario

Puedes establecer diferentes mensajes de error para diferentes formularios. Aquí te mostramos cómo personalizar los mensajes según el ID del formulario. Si necesitas ayuda para encontrar tus IDs de formulario, consulta nuestra guía sobre cómo encontrar IDs de formulario y de campo.

/**
 * Change the User Login Form error message specific per form
 *
 * @link https://wpforms.com/developers/change-validation-messages-for-user-registration-addon/
 */
function wpf_dev_form_login_errors( $fields, $entry, $form_data ) {
    $form_id = (int) $form_data[ 'id' ];
    
    add_filter(
        'wpforms_user_registration_login_error',
        function ( $message, $code ) use ( $form_id ) {
            // This if for form ID 525
            if ( $form_id === 525) {
                // This is the specific message for form ID 525
                return __( 'The error message here for form #525', 'text-domain' );
            }
            // This is for form ID 526
            if ( $form_id === 526) {
                // This is the specific message for form ID 526
                return __( 'The error message here for form #526', 'text-domain' );
            }
            return $message;
        },
        10,
        2
    );
}
add_action( 'wpforms_process', 'wpf_dev_form_login_errors', 9, 3 );

Preguntas frecuentes

P: ¿Puedo mostrar todos los mensajes de error a la vez?

R: No, PHP se ejecuta en el orden en que se añaden los fragmentos de código o en orden de prioridad establecida en la función. Si añadiste primero el fragmento wpforms_user_registration_username_exists en tu sitio, una vez que se envíe el formulario, ejecutará tus fragmentos en el orden en que se añadieron y mostrará el mensaje del primer fragmento que falle.

Y eso es todo lo que necesitas para agregar mensajes de validación adicionales para el complemento de Registro de Usuarios. ¿Te gustaría iniciar sesión automáticamente a tus usuarios una vez que hayan completado el registro? Consulta nuestra guía sobre cómo iniciar sesión automáticamente a los usuarios después del registro o aprende cómo agregar campos de metadatos de usuario personalizados a los formularios de registro.

¿Puedo cambiar el mensaje de confirmación que se muestra después de que un usuario restablece su contraseña?

Sí. Si estás utilizando la plantilla Restablecimiento de contraseña y deseas personalizar el mensaje de confirmación que aparece después de que un usuario restablece su contraseña correctamente, puedes usar el fragmento de código a continuación.

function wpf_custom_reset_confirmation_message( $message, $form_data ) {
    // Modify the confirmation message based on the presence of a specific field type for grabbing the username or email.
    if ( true === wpforms_has_field_type( 'text', $form_data ) ) {
        $message = esc_html__( 'Please check your email to reset your password.', 'wpforms' );
    } else {
        $message = esc_html__( 'Your new password has been set successfully!', 'wpforms' );
    }
    return $message;
}
add_filter( 'wpforms_frontend_confirmation_message', 'wpf_custom_reset_confirmation_message', 10, 2 );

Filtros de referencia