Resumo de IA
Gostaria de personalizar as mensagens de erro que aparecem durante o registo de utilizadores? O WPForms permite-lhe criar mensagens mais úteis como “Nome de utilizador já existe” ou “Email já existe” para orientar os seus visitantes durante o processo de registo.
Este guia irá mostrar-lhe como personalizar estas mensagens de validação utilizando PHP.
Configurar o seu Formulário de Registo
Primeiro, certifique-se de que instalou o addon de Registo de Utilizador para WPForms. Este addon fornece dois modelos pré-feitos: Formulário de Login de Utilizador e Formulário de Registo de Utilizador. Como estamos a focar-nos nas mensagens de registo, crie um novo formulário utilizando o modelo de Registo de Utilizador.
Estes formulários podem exibir vários tipos de mensagens de validação para ajudar a orientar os seus utilizadores. Vamos personalizar cada tipo de mensagem.
Alterar as Mensagens de Validação
Para alterar as mensagens de validação, terá de adicionar um dos trechos abaixo ao seu site.
Se não tem a certeza de como adicionar código personalizado, consulte o nosso guia sobre como adicionar trechos de código ao seu site.
Mensagem de Nome de Utilizador Já Existente
A mensagem padrão é Já existe um utilizador com esse nome de utilizador. Eis 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 Email Já Existente
A mensagem padrão é Já existe um utilizador com esse email. Eis 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 Password Incorreta
A mensagem padrão é Erro: A password que introduziu para o nome de utilizador está incorreta. Perdeu a sua password? Eis como personalizá-la com um link de reposição de password:
/**
* 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 );
Mensagens Personalizadas de Formulário de Login
Também pode personalizar mensagens para o formulário de login de utilizador. Eis 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 );
Mensagem de Link de Reposição de Password Inválido ou Expirado
Se estiver a usar o modelo de Reposição de Password e quiser alterar a mensagem de erro que aparece quando um utilizador abre um link de reposição inválido ou expirado, 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
Pode definir diferentes mensagens de erro para diferentes formulários. Eis como personalizar mensagens com base no ID do formulário. Se precisar de ajuda para encontrar os seus IDs de formulário, consulte o 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 adicionou primeiro o trecho wpforms_user_registration_username_exists no seu site, assim que o formulário for submetido, ele executará os seus trechos na ordem em que foram adicionados e exibirá a mensagem para o primeiro trecho em que falhar.
E é tudo o que precisa para adicionar mensagens de validação adicionais para o suplemento de Registo de Utilizador. Gostaria de iniciar sessão automaticamente os seus utilizadores depois de completarem o registo? Consulte o nosso guia sobre como iniciar sessão automaticamente os utilizadores após o registo ou aprenda como adicionar campos de meta de utilizador personalizados aos formulários de registo.
P: Posso alterar a mensagem de confirmação apresentada após um utilizador repor a sua palavra-passe?
Sim. Se estiver a usar o modelo Reposição de Palavra-passe e quiser personalizar a mensagem de confirmação que aparece após um utilizador repor com sucesso a sua palavra-passe, pode usar o excerto 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 );