Formulário de contato 7 definir valor do campo com solicitação get
-
26-12-2019 - |
Pergunta
Quero definir um valor de campo com solicitação get
exemplo.com/subscribe/?email=asfafs
mas quando carrego a página que contém o formulário, o formulário não aparece.Eu entendo por que não poderia estar aparecendo.Porque o próprio formulário também pode enviar uma solicitação get.Eu também instalei esse plugin que deveria me permitir definir um valor de campo, mas isso não acontece.
isso é o que eu tenho:
<p>Uw naam (verplicht)<br />
[text* input-name] </p>
<p>Uw email (verplicht)<br />
[dynamictext dynamicname "CF7_GET key='email'"] </p>
<p>Onderwerp<br />
[text your-subject] </p>
<p>Uw bericht<br />
[textarea your-message] </p>
<p>[submit "Verzenden"]</p>
Na minha página:
<?php echo do_shortcode('[contact-form-7 id="1062" title="Contactformulier 1"]'); ?>
Eu não me importaria de usar um plugin diferente para isso.Se houver algum que atenda às minhas necessidades, por favor me diga.
Solução
Acabei de instalar o plugin que você vinculou e testei.O plug-in não se destina a extrair uma variável GET para um campo no Formulário de Contato 7.O plugin fará duas coisas
- Ele pegará a variável $_GET e criará um campo oculto com ela.
- Ele mostrará a variável na página (apenas como texto, não em um campo)
O shortcode que você tem no seu exemplo é para ser usado por este http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/ plugar.Baixei e testei esse plugin também e parece funcionar bem.
Aqui está a página em que criei o exemplo. http://jtwebb.com/stackoverflow-question/?someemail=asdf se você quiser dar uma olhada para ver se está funcionando com o plugin de extensão de texto dinâmico.
ATUALIZAR:Este é o código do meu formulário de contato 7:
<p>Your Name (required)<br />
[text* your-name] </p>
<p>[showparam someemail] <-- this is the shortcode of show param, just text no field</p>
<p>[getparam someemail] If you inspect this you'll see a hidden get field with the value of 'someemail' in it.</p>
<p>Your Email (required)<br />
[dynamictext* dynamictext-380 "CF7_GET key='someemail'"]<br>This field was created with <a href="http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/">http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/</a></p>
<p>Subject<br />
[text your-subject] </p>
<p>Your Message<br />
[textarea your-message] </p>
<p>[submit "Send"]</p>
Outras dicas
[text* your-name default:get]
O campo obterá seu valor padrão do GET
variável com o mesmo nome (“seu-nome”).Tente isso acessando o URL
da página do formulário com uma string de consulta adicional:
http://example.com/contact/?your-name=John+Smith
Mas e se você tiver duas ou mais opções padrão em uma única tag de formulário?Vamos considerar o caso desta tag de formulário:
[text* your-name default:get default:post_meta "Your Name"]
Sei que esta pergunta já foi respondida mas para quem procura uma solução que não requeira plugin optei por fazer o seguinte.
Primeiro criei meu formulário dentro do plugin através do painel do Wordpress.Adicionei o campo que queria manter o parâmetro do URL e atribuí a ele um ID.
[text page-name class:form-control id:source minlength:2 maxlength:80]
Em seguida adicionei um link que passaria o parâmetro para o formulário assim
<a href='http://mycoolwebsite.com/contact?id=homepage'>Contact Us</a>
Então usando alguns Javascript
e JQuery
Eu recebo o id
parâmetro do URL e defina-o como o valor para minha entrada no formulário.(O getParameterByName(name,url)
A função foi retirada desta resposta: Como posso obter valores de string de consulta em JavaScript?)
function getParameterByName(name, url) {
if (!url) url = window.location.href;
url = url.toLowerCase();
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var param = getParameterByName('id');
jQuery('#source').hide();
jQuery('#source').prop('disabled', true);
jQuery('#source').attr('value', param);
jQuery('#source').val(param);
Também escondo e desabilito o campo de entrada para que ele não seja visto e não possa ser modificado (facilmente).Eu também escondo o campo de entrada usando CSS
#source{visibility:hidden}
Dessa forma, posso vincular o formulário de qualquer lugar do meu site e anexar a fonte de onde a pessoa veio e colocá-la no e-mail que recebo.
Não vejo problemas com este método e elimina a necessidade de usar um plugin.Tenho certeza de que não é ideal depender de Javascript, mas também não é ideal usar muitos plug-ins em seu site, pois eles podem ficar desatualizados muito rapidamente e muitas vezes podem causar conflitos entre si.
Espero que isso ajude quem procura uma alternativa.Gostaria de saber a opinião das pessoas sobre este caminho, pois estou aberto a sugestões sobre como melhorá-lo.
Você pode inicialmente definir um texto exclusivo no campo do formulário e, em seguida, usar o gancho para substituí-lo pelo valor desejado.E então nenhum plugin será necessário.
Exemplo.No código do formulário:
<p>Phone<br />
[text phone "PHONE_VALUE"] </p>
em funções.php:
add_filter( 'wpcf7_form_elements', function( $form ) {
$form = str_replace( 'PHONE_VALUE', $_GET['phone'], $form );
return $form;
} );
em URL:
example.com/page?phone=111111
conforme isso artigo
se você quiser enviar um valor para uma lista de seleção, isso pode ser feito facilmente adicionando o parâmetro default:get
ao código do campo:
[select* the-recipient default:get "Employee One|employeeone@yourdomain.com" "Employee Two|employeetwo@yourdomain.com" "Employee Three|employeethree@yourdomain.com"]
e então envie o parâmetro na solicitação GET, como:
http://yourdomain.com/contact/?the-recipient=Employee%20Two