Как вставить результат выполнения php скрипта в тег Contact Form 7 или в поле «кому» Contact Form 7?

Ссылка скопирована
PHP
1 ответ

В Contact Form 7 в настройках формы во вкладке "Письмо" можно указать адрес получателя в поле "Кому".
В разных ситуациях нужно чтобы письмо отправлялось на разные адреса. Подскажите пожалуйста, как в поле "Кому" подставить результат выполнения php скрипта если это вообще возможно? Или тег в котором будет результат выполнения скрипта.

Как вставить результат выполнения php скрипта в тег Contact Form 7 или в поле «кому» Contact Form 7?

Дополнительно:

Ответы:

В Contact Form 7 в настройках формы во вкладке "Письмо" можно указать адрес получателя в поле "Кому".
В разных ситуациях нужно чтобы письмо отправлялось на разные адреса

Для выбора кому отправить в CF7 есть родной функционал

Вот как я делал для клиента
- Поле в форме

<p class="half"></p> Тема сообщения [select* feedback "Консультация по ассортименту|manager@myim.com" "О работе магазина|sales@myim.com" "Проблема на сайте|webmaster@myim.com, admin@myim.com"]

<p class="half"></p> Тема сообщения [select* feedback "Консультация по ассортименту|manager@myim.com" "О работе магазина|sales@myim.com" "Проблема на сайте|webmaster@myim.com, admin@myim.com"]

-В поле "Кому"
[feedback]

Правда, CF7 ругается, что типа не корректно заполнено это поле, но работает.

  • Возможно я не вполне понятно объяснил. Там для каждого посетителя индивидуальный адрес уникальный должен генерироваться php кодом на основе utm меток, на который будет идти письмо. Т.е. должен php код выполняться или значение переменной подставляться из уже выполненного на странице кода.
  • IvanRivan, хм.. тогда похоже надо писать плагина-дополнение к CF7 со своим шорткодом. Но я вижу у тебя на скрине шорткоды utm. Может не нужно ничего генерировать, а использовать эти шорткоды? ну типа [utm_source]@mydomen.ru? Или же нужно брать реальные (а не генерённые) адреса из базы и сопоставлять их с метками?
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Backend-редакция Ответ

В Contact Form 7 результат PHP-скрипта напрямую в поле “Кому” вставлять не нужно. Есть два нормальных способа: использовать pipe в select или менять получателя через фильтр CF7 перед отправкой письма.

Если пользователь сам выбирает тему обращения, проще всего использовать pipe:

[select* feedback
"Консультация по ассортименту|manager@example.com"
"О работе магазина|sales@example.com"
"Проблема на сайте|webmaster@example.com"]

[select* feedback "Консультация по ассортименту|manager@example.com" "О работе магазина|sales@example.com" "Проблема на сайте|webmaster@example.com"]

А в поле “Кому” указываете:

[feedback]

[feedback]

CF7 может предупреждать о нестандартном email-поле, но pipe — штатный механизм. Главное, чтобы значения были корректными адресами и не приходили произвольно от пользователя.

Если адрес нужно определить PHP-логикой, используйте фильтр wpcf7_before_send_mail:

add_action('wpcf7_before_send_mail', function ($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) {
        return;
    }
 
    $data = $submission->get_posted_data();
    $mail = $contact_form->prop('mail');
 
    if (($data['city'] ?? '') === 'moscow') {
        $mail['recipient'] = 'moscow@example.com';
    } else {
        $mail['recipient'] = 'common@example.com';
    }
 
    $contact_form->set_properties(['mail' => $mail]);
});

add_action('wpcf7_before_send_mail', function ($contact_form) { $submission = WPCF7_Submission::get_instance(); if (!$submission) { return; } $data = $submission->get_posted_data(); $mail = $contact_form->prop('mail'); if (($data['city'] ?? '') === 'moscow') { $mail['recipient'] = 'moscow@example.com'; } else { $mail['recipient'] = 'common@example.com'; } $contact_form->set_properties(['mail' => $mail]); });

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

Вывод: для простого выбора отдела используйте pipe. Для сложной логики — фильтр CF7. В поле “Кому” нельзя безопасно “выполнить PHP”, но можно изменить настройки письма программно до отправки.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно