Для CMS WordPress существует плагин «Contact Form 7«, он позволяет реализовать нужные нам контактные формы. У нас уже есть созданная форма с нужными полями, осталось ей добавить функционал отправки в ВК. В данной статье речь пойдёт о том, как реализовать отправку данных из формы на сайте в ВКонтакте используя API VK и метод «messages.send«.
Contact Form 7 — Отправка данных из формы в ВКонтакте.
Что нам понадобиться:
- Установленный плагин Contact Form 7. Информацию о том как установить плагин «Contact Form 7» на WordPress можете посмотреть в данной статье: WordPress — Создание контактной формы)
- Токен от Standalone-приложение в ВКонтакте. Информацию о том как создать Standalone-приложение и token можете посмотреть в данной статье: API VK — Создаём Standalone-приложение и получаем token
- Скрипт для перехвата содержимого формы и отправки сообщения по средствам API VK, метод messages.send
- Доступ к файлу темы functions.php. Туда будем добавлять наш скрипт (файл можно найти по пути «/Домен/wp-content/themes/Название Темы» или в онлайн редакторе админки WordPress).
Создаём Хук для перехвата введенных данных из формы
Представим, что у нас уже установлен плагин Contact Form 7 и мы создали в нём нужную форму.
Так как наш плагин Contact Form 7 является сторонний, то нам необходимо создать хук для перехвата данных из формы. Выглядеть это будет так:
1 2 3 4 5 6 7 8 9 10 11 12 |
add_action( 'wpcf7_mail_sent', 'vk_sent_function' ); function vk_sent_function( $contact_form ) { $title = $contact_form->title; $posted_data = $contact_form->posted_data; if ('Контакты' == $title ) { //Вместо "Контакты" необходимо указать название Вашей контактной формы $submission = WPCF7_Submission::get_instance(); $posted_data = $submission->get_posted_data(); //далее мы перехватываем введенные данные в Contact Form 7 $firstName = $posted_data['your-name']; //перехватываем поле [your-name] $message = $posted_data['your-message']; //перехватываем поле [your-message] $email = $posted_data['your-email']; //перехватываем поле [your-email] $subject = $posted_data['your-subject']; //перехватываем поле [your-subject] |
Первое, что необходимо, это заменить имя формы в данном поле на Ваше:
1 |
if ('Контакты' == $title ) { //Вместо "Контакты" необходимо указать название Вашей контактной формы |
В нашем случае это «Контакты», взять имя можно перейдя в настройки Contact Form 7
Далее нам необходимо указать интересующие нас поля. В данном методе мы перехватываем только четыре поля:
- [‘your-name’] — Имя
- [‘your-message’] — Сообщение
- [‘your-email’] — Emai
- [‘your-subject’] — Тема
Сразу же возникает вопрос, откуда взять и как добавить свои поля из формы. Тут всё просто, заходим в редактирование нашей формы и там видим все поля и их значения. К примеру нам необходимо добавить поле с номером телефона. Я его заранее внёс в шаблон формы.
Получаем имя «tel-740» (у Вас соответственно своё название). Далее необходимо добавить новое поле в наш скрипт, добавить для него переменную (дописать в конце), например так:
1 |
$tel = $posted_data['tel-740']; |
[‘tel-740’] — наше поле
$tel — новая переменная (название можете указывать любое)
В итоге хук будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
add_action( 'wpcf7_mail_sent', 'vk_sent_function' ); function vk_sent_function( $contact_form ) { $title = $contact_form->title; $posted_data = $contact_form->posted_data; if ('Контакты' == $title ) { //Вместо "Контакты" необходимо указать название Вашей контактной формы $submission = WPCF7_Submission::get_instance(); $posted_data = $submission->get_posted_data(); //далее мы перехватываем введенные данные в Contact Form 7 $firstName = $posted_data['your-name']; //перехватываем поле [your-name] $message = $posted_data['your-message']; //перехватываем поле [your-message] $email = $posted_data['your-email']; //перехватываем поле [your-email] $subject = $posted_data['your-subject']; //перехватываем поле [your-subject] $tel = $posted_data['tel-740']; //Новое поле с телефоном |
Отправка данных из формы в ВКонтаке
Теперь нам необходимо дописать код отправки текста из формы в ВКонтакт. Скрипт будет выглядеть так:
1 2 3 4 5 |
//Отправляем сообщение в ВК $domain = "name"; //Доменное имя получателя сообщения в ВК $token = "a17522b1ee63dc773940fi5679gi4u93cd0c7a9b4f88d1d6a945e9e9248801626d25cd316e1d01"; // Тут укажите ВАШ токен от приложения ВК $sbormess = "[Сообщение с сайта Pechenek.NET]<br> Имя: ".$firstName."<br> Email: ".$email."<br> Тема сообщения: ".$subject."<br> Содержимое сообщения:<br>".$message; // Скрепляем содержимое формы в одну переменную $query = file_get_contents("https://api.vk.com/method/messages.send?domain=".$domain."&message=".urlencode($sbormess)."&v=5.69&access_token=".$token); //отправляем сообщение |
$domain — тут указываем доменное имя получателя сообщения (обычно отображается в строке браузера, когда открываешь страницу пользователя ВК, примерно так: «vk.com/name»)
Хочу заметить, что вместо домена можно использовать user_id, то есть идентификатор пользователя. Для этого необходимо в переменной $query исправить «?domain=» на «user_id«. Должно быть так:
1 $query = file_get_contents("https://api.vk.com/method/messages.send?user_id=".$domain."&message=".urlencode($sbormess)."&v=5.69&access_token=".$token);Ну и соответственно в переменной $domain указать id пользователя.
$token — в данной переменной указываете свой токен, полученный в результате создания Standalone-приложение.
$sbormess — тут указываем необходимый текст и переменные из формы. В моём случае: $firstName, $email, $subject, $message. Так же не забывайте если вы добавили своё поле и новую переменную, то тут её доже необходимо добавить, иначе не получите текс из нужного поля.
$query — тут сам запрос к API VK, который отправляет сообщение.
Готовый скрипт отправки данных из формы в ВКонтакт
Ну и в результате готовый скрипт будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//Отправка сообщений в ВК add_action( 'wpcf7_mail_sent', 'vk_sent_function' ); function vk_sent_function( $contact_form ) { $title = $contact_form->title; $posted_data = $contact_form->posted_data; if ('Контакты' == $title ) { //Вместо "Контакты" необходимо указать название Вашей контактной формы $submission = WPCF7_Submission::get_instance(); $posted_data = $submission->get_posted_data(); //далее мы перехватываем введенные данные в Contact Form 7 $firstName = $posted_data['your-name']; //перехватываем поле [your-name] $message = $posted_data['your-message']; //перехватываем поле [your-message] $email = $posted_data['your-email']; //перехватываем поле [your-email] $subject = $posted_data['your-subject']; //перехватываем поле [your-subject] //Отправляем сообщение в ВК $domain = "name"; //Доменное имя получателя сообщения в ВК $token = "a17522b1ee63dc7739404rgf4524rfr234rf20c7a9b4f88d1d6a945e9e9248801626d25cd316e1d01"; // Тут укажите ВАШ токен от приложения ВК $sbormess = "[Сообщение с сайта Pechenek.NET]<br> Имя: ".$firstName."<br> Email: ".$email."<br> Тема сообщения: ".$subject."<br> Содержимое сообщения:<br>".$message; // Скрепляем содержимое формы в одну переменную $query = file_get_contents("https://api.vk.com/method/messages.send?domain=crazy.king&message=".urlencode($sbormess)."&v=5.69&access_token=".$token); //отправляем сообщение } } |
Теперь нам необходимо его добавить в конец файла functions.php и проверить работоспособность.
Заполняем поля нашей формы:И нажимаем отправить. И смотрим, что пришло в ВКонтакте:
Теперь Вы не пропустите важное сообщение с вашего сайта.
На этом пожалуй всё, надеюсь статья была вам полезной. Не забывайте пользоваться кнопками «Поделиться в соц. сетях», так же подписываться на наш Канал и группы в ВК, Twitter, Facebook.
Всем удачи и море печенек!
I am really impressed with your writing skills as well as with the layout on your weblog. Is this a paid theme or did you customize it yourself? Either way keep up the excellent quality writing, it’s rare to see a nice blog like this one these days..