Atenção!

Este artigo contém código PHP e destina-se a desenvolvedores. Oferecemos este código como uma cortesia, mas não fornecemos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação extra, consulte o tutorial do WPBeginner sobre como adicionar código personalizado.

Dispensar

Como Alterar Mensagens de Validação para o Addon de Registro de Usuário

Gostaria de personalizar as mensagens de erro que aparecem durante o registro de usuários? O WPForms permite criar mensagens mais úteis como “Nome de usuário já existe” ou “E-mail já existe” para guiar seus visitantes durante o processo de registro.

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

Configurando seu Formulário de Registro

Primeiro, certifique-se de ter instalado o addon de Registro de Usuário para WPForms. Este addon fornece dois modelos pré-fabricados: Formulário de Login de Usuário e Formulário de Registro de Usuário. Como estamos focando nas mensagens de registro, crie um novo formulário usando o modelo de Registro de Usuário.

Se precisar de ajuda para criar seu formulário de registro, confira nosso guia sobre como criar formulários de registro de usuário.

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

Alterando as Mensagens de Validação

Para alterar as mensagens de validação, você precisará adicionar um dos trechos 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 este 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 este 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 é Erro: A senha que você inseriu para o nome de usuário está incorreta. Esqueceu sua senha? Veja 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 em PHP, você precisa escapá-las com barras duplas. Além disso, se você alterar a URL de redefinição de senha, os usuários não poderão usar a funcionalidade de redefinição de senha integrada do WordPress.

Mensagens Personalizadas de Formulário de Login

Você também pode personalizar mensagens para o formulário de login de usuário. Veja 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 );

Se você estiver usando o modelo de Redefinição de Senha e quiser alterar a mensagem de erro que aparece quando um usuário abre um link de redefinição inválido ou expirado, você pode usar o trecho abaixo.

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

Mensagens de Erro Específicas do Formulário

Você pode definir mensagens de erro diferentes para formulários diferentes. Veja como personalizar mensagens com base no ID do formulário. Se precisar de ajuda para encontrar seus IDs de formulário, confira nosso guia sobre como encontrar IDs de formulário e 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 );

Perguntas Frequentes

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

R: Não, o PHP é executado na ordem em que os trechos são adicionados ou na ordem de prioridade definida na função. Se você adicionou o trecho wpforms_user_registration_username_exists primeiro em seu site, assim que o formulário for enviado, ele executará seus trechos na ordem em que foram adicionados e exibirá a mensagem para o primeiro trecho em que falhar.

E é tudo o que você precisa para adicionar mensagens de validação adicionais para o addon de Registro de Usuário. Você gostaria de registrar seus usuários automaticamente assim que eles completarem o registro? Confira nosso guia sobre como registrar usuários automaticamente após o registro ou aprenda como adicionar campos de metadados de usuário personalizados aos formulários de registro.

P: Posso alterar a mensagem de confirmação exibida após um usuário redefinir sua senha?

Sim. Se você estiver usando o modelo Redefinição de Senha e quiser personalizar a mensagem de confirmação que aparece após um usuário redefinir sua senha com sucesso, você pode usar o trecho abaixo.

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 Referência