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

Gostaria de bloquear os envios de formulários que contenham profanação? Pode criar facilmente uma lista de palavras expletivas que parariam qualquer submissão de formulário se fossem encontradas dentro do seu Texto de parágrafo ou num campo de Texto de linha única utilizando um pequeno trecho de código. Neste tutorial, vamos guiá-lo pelos passos de como conseguir isso com PHP.

Criar o seu formulário

Primeiro, tem de criar um novo formulário e adicionar um Texto de parágrafo ou um Texto de linha única.

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

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

Bloqueio de envios com palavrões

Em seguida, elabore uma lista de palavras que pretende adicionar ao seu filtro de profanação. Depois de identificar as palavras que pretende bloquear, terá de adicionar um destes 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 uma 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 );

A utilização deste snippet bloqueará 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 pronto! Criou e implementou um filtro de profanação para os seus campos de formulário de texto de linha única e de parágrafo. Gostaria de bloquear a introdução de URLs no seu formulário? Veja o nosso tutorial sobre Como bloquear URLs dentro dos campos de formulário.

Acções de referência