Resumen de IA
¿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.
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 );
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 );
Mensaje de enlace de restablecimiento de contraseña no válido o caducado
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 );