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.

Foi útil?

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

  1. Ele pegará a variável $_GET e criará um campo oculto com ela.
  2. 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top