Como alterar as mensagens de validação do complemento de registro de usuário

Gostaria de personalizar as mensagens de erro que aparecem durante o registro do usuário? O WPForms permite criar mensagens mais úteis, como "Username Already Exists" (Nome de usuário já existe) ou "Email Already Exists" (E-mail já existe), para orientar seus visitantes durante o processo de registro.

Este guia mostrará a você como personalizar essas mensagens de validação usando PHP.

Configuração do formulário de registro

Primeiro, certifique-se de ter instalado o complemento User Registration (Registro de usuário ) para WPForms. Esse complemento fornece dois modelos predefinidos: Formulário de login do usuário e Formulário de registro do usuário. Como estamos nos concentrando em mensagens de registro, crie um novo formulário usando o modelo User Registration.

Se precisar de ajuda para criar o formulário de registro, consulte nosso guia sobre a criação de formulários de registro de usuários.

Esses formulários podem exibir vários tipos de mensagens de validação para ajudar a orientar seus usuários. Vamos personalizar cada tipo de mensagem.

Como alterar as mensagens de validação

Para alterar as mensagens de validação, você precisará adicionar um dos snippets abaixo ao seu site.

Se não tiver certeza de como adicionar código personalizado, consulte nosso guia sobre como adicionar trechos de código ao seu site.

Mensagem de nome de usuário já existente

A mensagem padrão é Um usuário com esse nome de usuário já existe. Veja como personalizá-la e adicionar um link de login:

/**
 * 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 );

Mensagem de e-mail já existente

A mensagem padrão é Um usuário com esse e-mail já existe. Veja como personalizá-la com um link de login:

/**
 * 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 );

Mensagem de senha incorreta

A mensagem padrão é Error (Erro): A senha que você digitou para o nome de usuário está incorreta. Perdeu sua senha? Veja aqui como personalizá-la com um link de redefinição de senha:

/**
 * 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 );

Ao adicionar URLs no PHP, você precisa escapar delas com barras duplas. Além disso, se você alterar o URL de redefinição de senha, os usuários não poderão usar a funcionalidade integrada de redefinição de senha do WordPress.

Mensagens personalizadas do formulário de login

Também é possível personalizar mensagens para o formulário de login do usuário. Veja a seguir como criar uma mensagem genérica para todos os formulários:

/**
 * 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 );

Mensagens de erro específicas do formulário

Você pode definir mensagens de erro diferentes para formulários diferentes. Veja como personalizar as mensagens com base no ID do formulário. Se precisar de ajuda para encontrar os IDs dos formulários, consulte nosso guia sobre como encontrar IDs de formulários e campos.

/**
 * 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 );

Perguntas frequentes

P: Posso mostrar todas as mensagens de erro de uma só vez?

R: Não, o PHP é executado na ordem em que os snippets são adicionados ou na ordem da prioridade definida na função. Se você adicionou o snippet wpforms_user_registration_username_exists primeiro em seu site, quando o formulário for enviado, ele executará os snippets na ordem em que foram adicionados e exibirá a mensagem do primeiro snippet em que houver falha.

E isso é tudo o que você precisa para adicionar mensagens de validação adicionais para o complemento User Registration. Gostaria de fazer o login automático dos usuários depois que eles concluírem o registro? Confira nosso guia sobre como fazer login automaticamente nos usuários após o registro ou saiba como adicionar metacampos de usuário personalizados aos formulários de registro.

Filtros de referência