Сегодня проведем интеграцию UniSender и WordPress. Тема не новая, но нормальное описание встречаеться редко. В данной статье мы проведем интеграцию UniSender и WordPress из одной формы Contact Form 7 на сайте (к примеру, если их у нас много).
Поехали! Для начала получаем все данные от UniSender (API ключ, ID списка пользователей). Дальше находим нужную нам контактную форму и получает ее ID. Для этого под названием формы, наводим мышью на «Изменить» и как на картинке снизу, запоминаем цифры которые идут за «post=«, в нашем случае это 5207.
Наша форма состоит из следующих полей:
Далее открываем файл functions.php нашей активной темы и в саом конце добавляем следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_start_function' ); function wpcf7_before_send_mail_start_function($cf7){ $idcf = $cf7->id; if ($idcf == "5207") { $mail=$cf7->prop('mail'); // Ваш ключ доступа к API (из Личного Кабинета) $api_key = "_Ваш ключ доступа к API_"; // Данные о новом подписчике $user_email = $_POST['your-email']; $user_name = $_POST['your-name']; $user_lists = "_ID списка пользователей_"; $user_tag = urlencode("Added using API"); $age = addslashes(htmlspecialchars($_POST['years'])); $phone = addslashes(htmlspecialchars($_POST['tel-781'])); // Создаём POST-запрос $POST = array ( 'api_key' => $api_key, 'list_ids' => $user_lists, 'fields[email]' => $user_email, 'fields[Name]' => $user_name, 'fields[phone]' => $phone, 'fields[kid_age]' => $age, 'double_optin' => '3', 'tags' => $user_tag ); // Устанавливаем соединение $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $POST); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_URL, 'https://api.unisender.com/ru/api/subscribe?format=json'); $result = curl_exec($ch); } } |
В коде выше, следует заменить «_Ваш ключ доступа к API_» на ваш ключ из UniSender, «_ID списка пользователей_» на соответствующий из UniSender.
1 2 3 |
$api_key = "_Ваш ключ доступа к API_"; $user_lists = "_ID списка пользователей_"; |
Также заменяем поля которые прийдут из вашей формы
1 2 3 4 |
$user_email = $_POST['your-email']; $user_name = $_POST['your-name']; $age = addslashes(htmlspecialchars($_POST['years'])); $phone = addslashes(htmlspecialchars($_POST['tel-781'])); |
на соответствующие и названия полей в списке UniSender.
1 2 3 4 |
'fields[email]' => $user_email, 'fields[Name]' => $user_name, 'fields[phone]' => $phone, 'fields[kid_age]' => $age, |
Обратите внимание, что названия полей (в нашем случае: email, Name, phone, kid_age) лучше всего уточнить у поддержки UniSender, так как регистр имеет значение.
Также в случае проблем (в моем огромное спасибо службе поддержки UniSender) лучше всего контактировать с ними.
Удачи вам и легкой работы )
А есть способ отправлять данные на юнисендер при оформлении заказа на woocommerce
Тоже ищу способ
Данный способ работает )
А про отправку с Woocomerce думаю, можно дописать.
А как с двух форм собирать? Например одинаковые поля имя имейл, в одну базу.
Добрый день,
копируете if {} и меняете ИД формы, код с 5 по 43 включительно и вставляете.
А в условие «ИЛИ» добавить не вариант? Зачем советовать глупый копипаст?
if ($idcf == «5207» || $idcf == «1231» || $idcf == «1234»)
Подскажите, как добавить с одной формы в 2 листа Юни? Правильно ли я понимаю, что нужно тут $user_lists = «_ID списка пользователей_»; перечислить ID листов через запятую?