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
Espero que tenham gostado, e até a próxima.