Send DATA From Contact Form 7 To Custom Application

Есть готовое приложение написанное на codeigniter.

Стандартное – пользователь создается сущность, сущность уходит на координатора, далее эксперты ну и т.д. Короче – круговорот сущности в природе. :-)

Платформа универсальная и представляет по сути такой себе backend.

У заказчика есть уже готовый сайт (frontend) на wordpress’e, форма созданием сущности зханимается contact form 7 – большая формочка с кучей полей, а также пятью аплодерами.

Первое, что пришло в голову – это с помощью фильтра просто изменить action url.

Вроде бы кажется – оооууу!.. круто!.. теперь всё будет слаться в мою аппликуху и только стоит прописать обратный редирект и всё ок..

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

Пришлось искать другие решения.

Пришла идея – чтобы валидация проходила на стороне сайта заказчика, а мне уже слало “отвалидированые” данные.

Нашел плагин Contact-Form-7: 3rd-Party Integration

По описанию – вроде бы то что надо.

Установил  (Да, скажу сразу для тех кого заинтересует данное творение, вроде бы рабочий, однако сырой, ещё многое в нем нужно допиливать).

Настроил и начал проверять – отослал форму, а на выходе получаю POST и не каких файлов.

А всё дело в том, что этот плагин попросту ремапит POST, который пришел с формы и шлет его wp_remote_post. Да и к тому же он как-то странно долго письмо шлет.

Одним словом бросил я его и взор мой пал на обычный cURL.

Не буду долго распинаться.

Итог:

1) Ставим HOOK на процесс wpcf7_before_send_mail - по сути это тогда, когда прошла валидация данных и данные уже готовы к отправки в виде письма.

Т.е., если это нужная форма, тогда забираем весь POST, добавляем его файлами (файлы по-умолчанию хранятся wp-content/uploads/wpcf7_uploads. и хранятся не постоянно – после отправки письма они удаляются), добавляем типа секретный код (хотя мне кажется это всё бесполезно) и шлем это всё с помощью cURL.

На выходе имеем массивы POST и FILES.

Всё. Далее в приложении я только проверил целостность, соответствие кода, завел массив для ремапинга данных и всё – данные ушли в базу данных, файлы в папки.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">