Criando Select dinâmico no Contact Form 7 no WordPress

O Contact Form 7 é um dos plugins mais populares para criação de formulários de contato no WordPress. Para utilizá-lo, basicamente, você trabalhará utilizando shortcodes criados pelo plugin e inserindo-os nas suas páginas ou posts no WordPress. Isso faz com que aquele form seja exibido. O plugin cria shortcodes tanto para inserir o formulário nas páginas e posts como para inserir os campos dentro do próprio formulário.

Muitas vezes precisamos definir conteúdos personalizados em uma determinada opção, como no select por exemplo e fica inviável acessar toda hora as configurações do formulário para adicionar mais uma opção.

Para resolvemos essa questão podemos utilizar um filter.

Neste tutorial, a versão que estou utilizando do WordPress  4.5.3 e do Plugin Contact Form 7 é 4.4.2

Vamos simular a seguinte situação: Precisamos que as categorias de um post sejam mostrados num select e essas categorias sempre tem uma rotatividade de nomes. Então, não caberia neste exemplo adicionarmos manualmente as categorias nos formulários.

Então vamos utilizar o filtro wpcf7_form_tag do plugin e com ele criaremos uma atributo que quando inserido irá definir o nosso conteúdo personalizado.

Vamos adicionar no arquivo functions.php do tema uma função que será chamada pelo filtro do plugin.

Segue a função:

function create_dynamic_select_list($tag, $unused){
	$options    = (array)$tag['options'];
	$categories = false;
	$search      = 'options_categories';
	
	foreach ($options as $option) {
		if (preg_match("/^".$search."$/", $option, $matches)){
			$categories = true;
			break;
		} 
	}	
	
	if($categories){
		$terms = get_terms('category', array('hide_empty' => false));
		foreach($terms as $term){
			$tag['raw_values'][] = $term->name;  
			$tag['values'][] = $term->name;  
			$tag['labels'][] = $term->name;			
		}
	}
	return $tags;
}

1 = Define uma função que receberá 2 parâmetros;
2 = Seleciona as opções das tags;
3 = Define uma variável pra informar se opção que criamos existe;
4 = Define o nome do atributo que usaremos no formulário;
6 = Percorre as opções da tag do formulário;
7 = Verifica se existe o atributo que queremos;
8 = Se exibir, adicionar o valor para $categories como verdadeira;
9 = Para o loop;
13 = Verificar se a variável $categories é verdadeira;
14 = Seleciona todas as categorias;
15 = Percorre as categorias;
16,17 = Define o valor da opção;
18 = Define o valor que será exibido para usuário;
21 = retorna as tags.

Agora vamos informa em qual filtro queremos que seja executada essa função.

add_filter( 'wpcf7_form_tag', 'create_dynamic_select_list', 10, 2);

Pronto, agora é só usá-lo no Contact Form 7

contact-form-7-tutorial

Espero que tenham gostado, e até a próxima.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *