Contact form 7 select

Imagine that you are a webmaster of a company and you need a contact form on your site which will allow the sender to select an email recipient. Let’s say that the options are the CEO of the company (ceo@example.com), the sales department (sales@example.com) and the support department (support@example.com).

You’ve been able to achieve this with Contact Form 7 in this way: first, make a drop-down menu or radio button for the selection (you can do this by inserting a form tag such as:

into the form template); second, enter a corresponding mail tag [your-recipient] into the To: field in the Mail section. This ensures that the email is sent to the specific address that the sender selected.

However, there has been a problem with this. By using this procedure, the email addresses are revealed over the Internet and this is not good. These addresses could then become targets of evil spammers very quickly.

So, what you need is a way to allow senders to select from closed data safely. The pipe (‘|’) support is just for this very purpose.

Change the form tag of drop-down menu to:

If you insert a pipe (‘|’) character in the middle of the option value, only the part before the pipe will be open to the outside, and the part after the pipe will be used for mail replacement.

To get the value after pipe character, put the usual mail tag corresponding to the form tag ( [your-recipient] in the case of the above example) in the Mail templates. To get value before pipe, you can use [_raw_ ] ( [_raw_your-recipient] in the case of the above example).

You can use this usage of pipe only in the drop-down menu values, radio buttons or checkboxes. If you don’t like this feature, you may define the constant WPCF7_USE_PIPE as false to disable it.

Читайте также:  Просмотр фото и видео в одной программе

В этой статье рассказано, как отправить произвольное значение через Contact Form 7. Возможно, этот метод поможет отправлять вам названия товаров или какие-либо свои данные посредством плагина Contact Form 7.

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

  1. Contact Form 7 — Dynamic Text Extension. Плагин для использования динамических полей.
  2. jQuery.
  3. Ну и конечно же WordPress с CF7.

Пора приступать к решению задачи!

Исходная задача

Итак, пришло время разобраться, о чем вообще пойдет речь. Есть у нас рандомный объект, значение которого нужно отправить. Смотрите скриншот.

Итак, задача такова. При нажатии кнопки заказать должна всплывать форма обратной связи. После ее заполнения данные должны быть отправлены на почту, в том числе и название активной вкладки. Но как отправить то, что к Contact Form 7 не относится? Правильно, получить значение вкладки и отправить в какое-либо поле формы обратной связи. И чтобы не маячило, лучше сделать его скрытым.

Решение

В таком случае поступаем так:

  1. Устанавливаем Contact Form 7 — Dynamic Text Extension. Конечно, можно справиться и без него, но данный плагин дает возможность делать скрытые поля с динамическим значением.
  2. Создаем дочернюю тему! В ней папки assetsjs . Там создаем файл script.js . Почему в дочерней теме? Если внести в рабочей, то при обновлении может слететь весь пользовательский код. Впрочем, решать вам.
  3. Начинаем упорно кодить!

В первую очередь нам нужно вычислить текстовое значение нужного поля. Пусть будет полный рандом!

Есть у нас активная вкладка, путь стилей к ней выглядит так .vc_tta-color-grey .vc_tta-style-classic .vc_tta-tab .vc_active > span.vc_tta-title-text

Особенно обратите внимание на .vc_active , данное поле будет ключевым при подмене значения в поле CF_7. Остальные вкладки имеют значение .vc_hiden , что позволяет отсечь ненужные значения.

Итак, для выполнения данной задачи подошел следующий код, который нужно внести в недавно созданный script.js :

Читайте также:  Цветные папки для windows 7

Теперь объясню, по какому принципу все это работает. Вначале мы создаем функцию, которая будет активироваться при нажатии на кнопку или виджет с нужным классом. В данном случае .popup-button . При клике на данную кнопку запустится выполнение нижеследующего кода.

С помощью данной строки получаем текстовое значение тайтла активной вкладки. Теперь это значение можно отправить в Contact Form 7. Для этого открываем плагин и создаем форму обратной связи. Соответственно, в поле указываем нужный класс.

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

Для этого понадобится расширение Dynamic Text Extension. Оно позволяет создавать скрытые динамические поля.

Вставляйте указанное поле, добавляйте ему нужный ID и все, готово.

Осталось допилить последнюю строку:

Данная строка отправляет полученное значение в поле с id products_name, можно использовать не идентификатор, а класс. на ваше усмотрение.

Как отправлять данные через письмо, надеюсь, знаете. Собственно, по такому принципу можно отправлять любое рандомное значение в нужное поле, что способно иногда заметно упростить жизнь. Главное, чтобы нужные классы превалировали над аналогичными.

Dynamic Select for Contact Form 7

Adopt my Contact Form 7 (CF7) Plugins

I am putting my 3 CF7 plugins up for adoption.

The reasons for this are:

  • I no longer use CF7 for my clients.
  • It is too difficult to use for my average client
  • It does not support the features my clients want
  • The authour of CF7 makes too many backwards compatibility breaking changes
  • I simply do not have time to keep up with maintenence for plugins I no longer use

These plugins do have users and are usefull for those that use CF7 and I’d rather someone else takes them over than let them die.

The 3 plugins involved are:

These plugins were built to work togther

  • The dynamic select to populate drop downs
  • The dynamic recipient send emails to different people
  • The hidden field to supply the fields that the recipient plugin needs to work
Читайте также:  1С заполнить табличную часть из таблицы значений

If you are interested in adopting all 3 of these plugins please open up an issue in any of the Github repos for any of these plugins. Below is how I would like to do this, if you have other ideas you can bring them up when you open the issue.

  • You fork all of these repos
  • You maintian, update and improve these plugins as needed an send me pull requests
  • You take over supporting these plugins on Github and WP (answer questions etc)
  • I will, for a short time continue to update the WP repo with your changes
  • At some time in the future I will transfer ownership of the both the Github and WordPress repos to you.

Add dynamically generated select fields (Drop-down menus) to forms in Contact Form 7 using filters

  1. Create a filter to be called from your CF7 Dynamic Select Field.
  1. Enter the filter name and any arguments into the Fitler Field when adding a Dynamic Select Field. For example, if we need to supply a term_id so that the filter can get the posts in a category the filter value entered would look something like this:

Do Not Include any extra spaces or quotes arround values, names or the =

You can pass any number are arguments to your filter and they will be converted into an array. For example the following:

This will call the function assocaited with the filter hook ‘my-filter’ with an arguments the argument array of: