Интеграция WordPress плагина Contact Form 7 с сервисом unisender.com

Пятница, 21 февраля 2014 22:54

Наверное многие знают о существовании плагина Contact Form 7, с помощью которого можно создавать практически любые формы обратной связи на сайтах, построенных на популярном движке WordPress. Плагин хорош, позволяет получать все введённые посетителем данные на ваш email. Но перед нами на днях поставили задачу по сложнее, необходимо было сделать так, чтобы после того, как пользователь ввёл свои данные на wordpress сайте, он тут же автоматически становился подписчиком на одну из рассылок, созданных с помощью сервиса unisender.com.

Раз нужно — значит сделаем.

Итак, что мы имеем: сайт на wordpress с несколькими формами, которые работают через Contact Form 7, и только две из них должны подписывать пользователей на рассылки в unisender. Причём каждая на свою.

Начинаем. Идём на unisender.com, в настройках своего аккаунта активируем API и запоминаем ключ от него. Далее переходим в Мои списки (то есть рассылки) и узнаём id наших рассылок. Для этого просто подводим курсор к кнопке редактирования нужного списка и видим его номер во всплывающей подсказке, он же присутствует и в ссылке на редактирование. Запоминаем эти номера.

Теперь переходим к нашему сайту на wordpress. Здесь нам нужны id наших форм, с которых мы будем отправлять информацию в unisender, а также названия нужных нам полей, которые мы и будем передавать. В нашем случае всё стандартно, отправлять нам нужно имя и email (ведь для подписки больше ничего и не нужно), эти поля у нас называются стандартно [your-name] и [your-email]. Записываем эти данные.

С подготовительной частью закончили, приступаем к реализации. Будем писать плагин, который будет получать необходимую нам информацию с нужных на форм Contact Form 7, и передавать её в фоновом режиме через API на unisender.com, автоматически подписывая пользователя на нужную нам рассылку.

В папке wp-content/plugins создаём файл нашего плагина, называем его как угодно, к примеру unisender.php. И в этот файл вставляем вот такой код (предварительно отредактировав его под себя, в соответствии с комментариями ниже):

<?php
/*
Plugin Name: Contact Form 7 API Unisender
Plugin URI: https://webpatron.net
Description: Автоматическая подписка в Unisender
Author: Webpatron Ltd.
Version: 1.0
Author URI: https://webpatron.net
*/
function wpcf7_get_unisender (&$WPCF7_ContactForm) {
    if ($WPCF7_ContactForm->posted_data['_wpcf7'] == "NOMER_FORMY_1"){
    $firstname = $WPCF7_ContactForm->posted_data['your-name'];
    $email = $WPCF7_ContactForm->posted_data['your-email'];
    file_get_contents('http://api.unisender.com/ru/api/subscribe?format=json&api_key=APIKEY&list_ids=NOMER_PODPISKI_1&fields[email]='.$email.'&fields[Name]='.$firstname.'&double_optin=0&overwrite=0');
    } elseif ($WPCF7_ContactForm->posted_data['_wpcf7'] == "NOMER_FORMY_2") {
    $firstname = $WPCF7_ContactForm->posted_data['your-name'];
    $email = $WPCF7_ContactForm->posted_data['your-email'];
    file_get_contents('http://api.unisender.com/ru/api/subscribe?format=json&api_key=APIKEY&list_ids=NOMER_PODPISKI_2&fields[email]='.$email.'&fields[Name]='.$firstname.'&double_optin=0&overwrite=0');        
    }
}
add_action("wpcf7_mail_sent", "wpcf7_get_unisender");
 
?>

Изменяем следующие значения:

  • NOMER_FORMY_1 и NOMER_FORMY_2 — вместо этого вписываем id наших форм из вордпресса.
  • NOMER_PODPISKI_1 и NOMER_PODPISKI_2 — а это соответственно номера наших рассылок в сервисе unisender.com.
  • APIKEY — это наш ключ от API, который мы получили на unisender.
  • Значение 0 в double_optin говорит о том, что пользователю ещё необходимо отправить запрос на подтверждение согласия на рассылку. Если поставить 1, то, этого согласия у его никто не спросит.

Вот в принципе и всё. Идём теперь в админку Wordpress, и активируем только что созданный нами плагин Contact Form 7 API Unisender.

Всё работает, поставленная задача выполнена.

UPD 02.02.2015: К сожалению, в самой новой версии Contact Form 7 данный способ интеграции уже не работает. Необходимо либо разбираться с новой версией, либо использовать старую. Если у вас появится необходимость в разработке новой версии - можно связаться с нашей службой поддержки и обсудить разработку нового плагина на платной основе.


Не знаю, как через плагин, а через function.php можно вот так:
posted_data) && class_exists('WPCF7_Submission')) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = array();
$data['title'] = $cf7->title();
$data['posted_data'] = $submission->get_posted_data();
}
// далее из массива $data['posted_data'] получаем поля CF7 по имени поля, например
// $data['posted_data']['your-name']
// $data['posted_data']['your-email']
// и делаем с ними что угодно
}
}
?>

Алексей Алексей | Четверг, 15 декабря 2016 20:33


Оставить комментарий

  • Способы
    Оплаты:
  • visa
  • mastercard
  • qiwi
  • webmoney
  • yandex money
  • sberbank
  • mts bank
  • zpayment
  • liqpay
  • alfabank white
  • paxum e1411320249623
Copyright © 2012 - 2024 WebPatron Ltd. All rights reserved.