Como criar uma lista negra global

Visão geral

Está interessado em estabelecer uma lista de bloqueio global ao nível do domínio que se aplique a todos os seus formulários? A elaboração de tal lista garantirá que quaisquer e-mails de spam previamente sinalizados sejam universalmente bloqueados em todos os seus WPForms através de uma função única e unificada.

Por defeito, utilizando a Allowlist ou Denylist, pode facilmente bloquear domínios para cada formulário utilizando *@bad-domain.com. Para saber mais sobre a configuração de uma lista de permissões ou de uma lista de recusas, consulte este guia útil.

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

Adicionar o snippet

Agora é altura de adicionarmos o snippet ao nosso site e personalizarmos a lista por nomes de domínio que queremos bloquear. Basta copiar e colar este snippet no 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 );

Este snippet irá analisar o nome de domínio introduzido no campo de e-mail e compará-lo com a lista global que criou neste 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 utilizador tentar introduzir esse domínio e submeter o formulário, verá o erro.

utilizando este snippet, pode facilmente criar uma lista negra global

E pronto! Criou com sucesso uma lista de bloqueio global para todos os seus WPForms. Gostaria de bloquear também palavrões nos 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