Задать вопрос
Aligatro
@Aligatro
Turn food and coffee into software...

Как выполнить функцию после сабмита формы?

Добрый день. В общем, уже 3-ий час ломаю себе голову, не могу понять почему не исполняется этот код после отправления письма в contact form 7.

$email = $_POST['your-email-phone'];
$name = $_POST['your-name'];
$budget = $_POST['number-45'];
$comm = $_POST['textarea-168'];


    	$arFields = array(
		'TITLE' => $name,
		'NAME' => $name,
		'COMMENTS' => $comm,
		'PHONE_MOBILE' => $email,
		'EMAIL_HOME' => "gererro@mail.ru",
		'OPPORTUNITY' => $budget,
		'CURRENCY_ID' => 'UAH',
	);
print_r ($arFields);

Пробовал вешать событие на хук (wpcf7_mail_sent or wpcf7_before_send_mail), не помогло, пробовал условие типа $_POST['_wpcf7_mail_sent']['ok'] ) { condition } которое тоже не сработало. Короче, понятие не имею как эту !#$#@ заставить работать.

В общем если кто-то сталкивался с подобной задачей, помогите пожалуйста разобраться. Спасибо!

upd: @webdisigner проблема не в самом коде который я привел, код исполняется так как было задумано, проблема в том, что я не могу повесить его на событие отправки письма в contact form 7. В самом плагине есть хук на который можно это повесить (wpcf7_mail_sent ), но он почему-то не срабатывает.

Вот полный код, который по задумке должен формировать GET запрос к REST API одного сервиса, после успешного отправки письма при помощи contact form 7.
function fbtrx24_send_lead_data() {
$email = $_POST['your-email-phone'];
$name = $_POST['your-name'];
$budget = $_POST['number-45'];
$comm = $_POST['textarea-168'];


    	$arFields = array(
		'TITLE' => $name,
		'NAME' => $name,
		'COMMENTS' => $comm,
		'PHONE_MOBILE' => $email,
		'EMAIL_HOME' => "gererro@mail.ru",
		'OPPORTUNITY' => $budget,
		'CURRENCY_ID' => 'UAH',
	);

$query = http_build_query($arFields);
$url = 'https://mysite.bitrix24.ru/crm/configs/import/lead.php?'.$query;
$result = file_get_contents($url);
}
add_action ('wpcf7_mail_sent', 'fbtrx24_send_lead_data')

P.s в самом коде ошибок я не заметил, единственная проблема в том, что код почему-то не вешается на событие отправки.

upd2: Проблему все же удалось решить, не знаю по какой причине, но action не исполняется на самой странице формы, пришлось выносить этот код в отдельный плагин. Всем большое спасибо.
  • Вопрос задан
  • 15782 просмотра
Подписаться 3 Оценить 1 комментарий
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Код и не мог работать на странице формы, WordPress не позволит. Почитай про lifecycle. Хукаться и выполнять другие низкоуровневые действия можно только из functions.php или из плагина. Непосредственно из файла темы (шаблона) работать не будет, если на пальцах - в тот момент, когда инклудится и выполняется файл темы, все основные экшны уже давно выстрелили.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Вы возможно форму GETот отправляете. Проверьте в самом начале, что пришло в POST.
print_r ($_POST)
return;

$email = $_POST['your-email-phone'];
$name = $_POST['your-name'];
$budget = $_POST['number-45'];
$comm = $_POST['textarea-168'];
    	$arFields = array(
		'TITLE' => $name,
		'NAME' => $name,
		'COMMENTS' => $comm,
		'PHONE_MOBILE' => $email,
		'EMAIL_HOME' => "gererro@mail.ru",
		'OPPORTUNITY' => $budget,
		'CURRENCY_ID' => 'UAH',
	);
Ответ написан
webdisigner
@webdisigner
$arFields = array(
'TITLE' => $name,
'NAME' => $name,
'COMMENTS' => $comm,
'PHONE_MOBILE' => $email,
'EMAIL_HOME' => "gererro@mail.ru",
'OPPORTUNITY' => $budget,
'CURRENCY_ID' => 'UAH'
);
В последней строке у вас стоит запятая.
А весь код скиньте, ото неясно
Ответ написан
@airisart
Расскажите, удалось ли реализовать? и могли бы Вы поделиться опытом. Спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы