Como criar uma lista negra global

Visão geral

Você tem interesse em estabelecer uma lista de bloqueio global no nível do domínio que se aplique a todos os seus formulários? A elaboração dessa lista garantirá que todos os e-mails de spam previamente sinalizados sejam universalmente bloqueados em todos os seus WPForms por meio de uma função única e unificada.

Por padrão, usando a Allowlist ou Denylist, você pode facilmente bloquear domínios para cada formulário usando *@bad-domain.com. Para saber mais sobre como configurar uma Allowlist ou Denylist, Confira este guia útil.

Entretanto, o objetivo principal deste tutorial é estabelecer uma lista global, eliminando a necessidade de edições individuais em cada formulário. Aproveitando os recursos do PHP, a construção dessa lista se torna um processo simples e rápido, como demonstraremos neste tutorial!

Adicionando o snippet

Agora é hora de adicionarmos o snippet ao nosso site e personalizarmos a lista de nomes de domínio que queremos bloquear. Basta copiar e colar esse snippet em seu site.

Para obter ajuda sobre como e onde adicionar snippets ao seu site, consulte este tutorial.

/*
 * Global denylist for domains on all WPForms.
 *
 * @link https://wpforms.com/developers/how-to-create-a-global-denylist/
*/
 
function wpf_dev_blacklist_global_domains( $field_id, $field_submit, $form_data ) {
 
    // Find the domain name, anything after the @ symbol
    $domain          = substr( strrchr( $field_submit, "@" ), 1 );
 
    // Add the domains here, separated by commas
    $blacklist       = array( 'deny.com', 'nope.com' );
 
    // Customize the error message that will be shown 
    if( in_array( $domain, $blacklist ) ) { 
        wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'We apologize, this domain is not accepted.', 'wpforms' );
        return;
    }
}
add_action('wpforms_process_validate_email', 'wpf_dev_blacklist_global_domains', 10, 3 );

Esse snippet examinará o nome de domínio inserido no campo de e-mail e o comparará com a lista global que você criou nesse snippet. Os nomes de domínio podem ser listados no formato [email protected]. Mas cada domínio é listado com aspas simples e depois separado por uma vírgula.

Quando qualquer usuário tentar inserir esse domínio e enviar o formulário, verá o erro.

Usando esse snippet, você pode criar facilmente uma lista de nomes global

E é isso! Você criou com sucesso uma lista de proibições global para todos os seus WPForms. Gostaria de bloquear também palavrões em seus formulários? Dê uma olhada no nosso tutorial sobre Como bloquear envios de formulários que contenham palavrões.

Referência da ação: wpforms_process_validate_email