Контактная форма 7 установить значение поля с запросом get

Я хочу установить значение поля с get request

example.com/subscribe/?email=asfafs

но когда я загружаю страницу, на которой есть форма, форма не отображается. Я понимаю, почему этого не видно. Потому что сама форма также может отправить запрос get. Я также установил этой плагин, который позволит мне установить значение поля, но это не так.

вот что у меня есть:

<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>

в моем страница:

<?php echo do_shortcode('[contact-form-7 id="1062" title="Contactformulier 1"]'); ?>

Я бы не прочь использовать для этого другой плагин. Если есть такой, который мне подходит, пожалуйста, скажите мне.

3 ответов


Я только что установил плагин, который вы связали и протестировали его. Плагин не предназначен для извлечения переменной GET для поля в контактной форме 7. Плагин будет делать две вещи

  1. он захватит переменную $_GET и создаст с ней скрытое поле.
  2. он покажет переменную на странице (так же, как текст, а не в поле)

шорткод, что у вас есть в вашем примере для этого http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/ плагин. Я загрузил и протестировал этот плагин, и, похоже, он работает нормально.

вот страница, на которой я создал пример. http://jtwebb.com/stackoverflow-question/?someemail=asdf Если вы хотите взглянуть, чтобы увидеть, что он работает с плагином расширения динамического текста.

обновление: это моя контактная форма 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>

[text* your-name default:get] Поле получит значение по умолчанию из GET переменная с тем же именем ("your-name"). Попробуйте это, обратившись к URL страницы формы с дополнительной строкой запроса:

http://example.com/contact/?your-name=John + Смит

но что делать, если у вас есть два или более параметров по умолчанию в одной форме тега? Рассмотрим случай этой формы-тега:

[text* your-name default:get default:post_meta "Your Name"]


Я знаю, что на этот вопрос уже ответил, но для тех, кто ищет решение, которое не требует плагин, я решил сделать следующее.

сначала я создал свою форму из плагина через Панель инструментов Wordpress. Я добавил поле, в котором хотел сохранить параметр из URL, и назначил ему идентификатор.

[text page-name class:form-control id:source minlength:2 maxlength:80]

затем я добавил ссылку, которая передала бы параметр в форму так

<a href='http://mycoolwebsite.com/contact?id=homepage'>Contact Us</a>

затем используя некоторые Javascript и JQuery получить id параметр из URL и установите его в качестве значения для моего ввода в форме. (The getParameterByName(name,url) функция была взята из этого ответа:как я могу получить значения строки запроса в 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);

Я также скрываю и отключаю поле ввода, поэтому оно не видно и не может быть изменено (легко). Я также скрываю поле ввода, используя CSS

#source{visibility:hidden}

таким образом, я могу ссылку на форму из любого места внутри моего сайта и добавьте источник, откуда пришел человек, и поместите его в полученное мной письмо.

Я не вижу никаких проблем с этим методом и устраняет необходимость в использовании плагин. Я уверен, что это не идеально, чтобы зависеть от Javascript, но в равной степени это не идеально использовать для многих плагинов на вашем сайте, поскольку они могут устареть очень быстро и часто могут вызвать конфликты друг с другом.

надеюсь, это поможет любому, кто ищет альтернативу. Я хотел бы знать мнения людей на этом пути, поскольку я открыт для предложений о том, как его улучшить.