Como bloquear envios de formulários que contenham palavrões

Gostaria de bloquear os envios de formulários que contêm palavrões? Você pode criar facilmente uma lista de palavras que impeçam qualquer envio de formulário se elas forem encontradas dentro do texto do parágrafo ou em um campo de texto de linha única usando um pequeno trecho de código. Neste tutorial, vamos orientá-lo nas etapas de como fazer isso com o PHP.

Criando seu formulário

Primeiro, você precisará criar um novo formulário e adicionar um Paragraph Text (Texto de parágrafo ) ou um Single Line Text (Texto de linha única).

Se precisar de ajuda para criar um formulário, consulte esta documentação.

adicionar um campo de formulário de texto único ou de parágrafo ao seu novo formulário

Bloqueio de envios com palavrões

Em seguida, elabore uma lista de palavras que deseja adicionar ao seu filtro de palavrões. Depois de identificar as palavras que deseja bloquear, você precisará adicionar um desses snippets ao seu site. Se precisar de ajuda para adicionar snippets ao seu site, consulte esta documentação.

Basta adicionar cada palavra ao seu $blocked_words separada por vírgula.

Campo de formulário de texto de parágrafo

/**
 * Prevent profanity words from Paragraph Text form fields.
 *
 * @link https://wpforms.com/developers/how-to-block-form-submissions-containing-profanity/
 */

function wpf_dev_profanity_filter_paragraph( $field_id, $field_submit, $form_data ) {

        // Create your list of profanity words separated by commas
	$blocked_words = array( 
		'badword1', 
		'badword2'
	);

    foreach( $blocked_words as $word ) {
        if(strpos($field_submit, $word) !== FALSE ) {
            wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'No profanity allowed.', 'plugin-domain' );
            return;
        }
    }

}

add_action( 'wpforms_process_validate_textarea', 'wpf_dev_profanity_filter_paragraph', 10, 3 );

O uso desse snippet bloqueará os envios que contenham palavrões dentro do campo de formulário de texto de parágrafo

Campo de formulário de texto de linha única

/**
 * Prevent profanity words from Single Line Text form fields.
 *
 * @link https://wpforms.com/developers/how-to-block-form-submissions-containing-profanity/
 */

function wpf_dev_profanity_filter_single_text( $field_id, $field_submit, $form_data ) {

        // Create your list of profanity words separated by commas
	$blocked_words = array( 
		'badword1', 
		'badword2'
	);

    foreach( $blocked_words as $word ) {
        if(strpos($field_submit, $word) !== FALSE ) {
            wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'No profanity allowed.', 'plugin-domain' );
            return;
        }
    }

}

add_action( 'wpforms_process_validate_text', 'wpf_dev_profanity_filter_single_text', 10, 3 );

Campo de formulário de rich text

/**
 * Prevent profanity words from Rich Text form fields.
 *
 * @link https://wpforms.com/developers/how-to-block-form-submissions-containing-profanity/
 */

function wpf_dev_profanity_filter_rich_text( $field_id, $field_submit, $form_data ) {

        // Create your list of profanity words separated by commas
	$blocked_words = array( 
		'badword1', 
		'badword2'
	);

    foreach( $blocked_words as $word ) {
        if(strpos($field_submit, $word) !== FALSE ) {
            wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'No profanity allowed.', 'plugin-domain' );
            return;
        }
    }

}

add_action( 'wpforms_process_validate_richtext', 'wpf_dev_profanity_filter_rich_text', 10, 3 );

E é isso! Agora você criou e implementou um filtro de profanação para os campos de formulário de texto de linha única e de parágrafo. Gostaria de bloquear a entrada de URLs em seu formulário? Confira nosso tutorial sobre Como bloquear URLs dentro dos campos do formulário.

Ações de referência