Contact Form 7 - Выполнение кода ПОСЛЕ отправки письма

30 июл. 2015 г., 16:38:54
Просмотры: 72.2K
Голосов: 9

Я разобрался, как выполнить действие ДО отправки письма, но мне также нужно выполнить действие ПОСЛЕ его отправки.

Я пробовал использовать wpcf7_after_send_mail, но безуспешно...

Буду признателен за любую помощь в этом вопросе.

4
Комментарии

Разве вы не можете использовать дополнительные настройки в настройках плагина контактной формы? - http://contactform7.com/additional-settings/

Andy Andy
30 июл. 2015 г. 16:51:08

Я как раз читал об этом, пока гуглил, но не понимаю, где эти настройки находятся. Позволяет ли это перенаправить определенную форму? Мне нужно перенаправить только одну конкретную форму, а не все формы.

Menno van der Krift Menno van der Krift
30 июл. 2015 г. 16:58:56

Может быть, вы могли бы применить такой подход?

birgire birgire
30 июл. 2015 г. 17:00:03

Ах, только что нашел и работает отлично :D Мой Wordpress на голландском, поэтому я не мог так легко найти Дополнительные поля xD

Menno van der Krift Menno van der Krift
30 июл. 2015 г. 17:05:33
Все ответы на вопрос 3
5
17

Для тех, кто все еще ищет способ выполнить PHP-код после отправки письма, в Contact Form 7 есть хук wpcf7_mail_sent именно для этого. Использование выглядит примерно так:

// ...в functions.php
add_action('wpcf7_mail_sent', function ($cf7) {
    // Выполнить код после отправки письма
});

Также есть wpcf7_mail_failed, который позволяет выполнить код при неудачной отправке письма.

5 янв. 2017 г. 16:10:19
Комментарии

У меня не сработало.

Pons Pons
1 мар. 2017 г. 18:31:30

Какую версию CF7 вы используете? У меня это работает на версии 4.6.1 с WordPress 4.7.2

adamtomat adamtomat
2 мар. 2017 г. 11:02:36

Кажется, я нашел ошибку в своем коде: я обернул вызов add_action проверкой has_action. Но, вероятно, когда мой код (внутри плагина) выполняется, действие wpcf7_mail_sent еще не существует. Удаление проверки has_action решило проблему.

Pons Pons
3 мар. 2017 г. 11:24:31

Что означает параметр ($cf7)? Нужен ли он мне?

Kevin.a Kevin.a
15 мар. 2017 г. 12:48:48

Это экземпляр класса WPCF7_ContactForm, который содержит множество информации о submitted форме.

Например, вы можете получить ID формы с помощью $cf7->id(). Возможно, он вам не нужен, в таком случае вы можете не использовать его, пока не возникнет необходимость.

Вот ссылка на класс в GitHub, если вы хотите изучить его функционал: https://github.com/wp-plugins/contact-form-7/blob/master/includes/contact-form.php

adamtomat adamtomat
16 мар. 2017 г. 11:05:08
3

РЕДАКТИРОВАНО:

Обратите внимание, что начиная с 2017 года 'on_sent_ok' устарел. Это означает, что ваш код перестанет работать в будущем (скорее всего к концу 2017 года). Рекомендуемое решение — использование DOM-обработчиков событий напрямую. Например, если вы использовали:

on_sent_ok: "ga( 'send', 'event', 'Contact Form', 'submit' );"

Вам следует заменить это на:

document.addEventListener( 'wpcf7mailsent', function( event ) {
    ga( 'send', 'event', 'Contact Form', 'submit' );
}, false );

JavaScript-код можно разместить, например, в подвале (футере) вашей страницы.

ИСХОДНЫЙ ОТВЕТ:

Разобрался. В настройках конкретной формы перейдите на вкладку дополнительных полей. Введите следующее: on_sent_ok: "location.replace('http://www.website-redirect.com');"

У меня это работает отлично. Надеюсь, это поможет и другим разработчикам в будущем.

Вкладка дополнительных полей в настройках формы

Я знаю, что изображение на голландском... но вы не пропустите его благодаря большим красным линиям вокруг названия вкладки.

30 июл. 2015 г. 17:07:04
Комментарии

как мы сохраняем cookie с помощью Additional Tab? Я пробую этот код on_submit: "ooid = document.getElementById('customer_orderid').value;document.cookie = 'myorderiiid='+ooid+'; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';"; но cookie не сохраняется.. ПОЧЕМУ?

Mostafa Mostafa
13 апр. 2017 г. 09:29:53

Обратите внимание, что этот вопрос был задан ДВА ГОДА НАЗАД ...

Menno van der Krift Menno van der Krift
30 окт. 2017 г. 12:12:33

Извините, у меня тогда не было достаточной репутации, чтобы добавить это как комментарий, поэтому единственным способом включить эту информацию было через редактирование.

Amade Amade
23 февр. 2018 г. 13:15:40
0

Использование on_sent_ok, как описано на contactform7.com/additional-settings, может быть очень полезным для добавления простого JavaScript, такого как редирект на другую страницу.

Однако этот метод довольно подвержен сбоям из-за конфликтов JavaScript с текущей темой WordPress или другими используемыми плагинами.

on_sent_ok выполняется самым последним в Contact Form 7, поэтому любой конфликт JavaScript может помешать его завершению.

В качестве альтернативы, Contact Form 7 предоставляет большое количество хуков, список которых доступен на http://hookr.io/plugins/contact-form-7/. Они могут предложить более точное и надежное решение.

1 авг. 2015 г. 08:42:36