Contact form 7 — плагин №1 для создания форм обратной связи. Подкупает он своей функциональностью и гибкостью, но как оказалось даже при таком изобилии опций как минимум одной ему не достает, а именно опции подсчета писем. Проще говоря мне нужен был счетчик который бы просто нумеровал каждое письмо отправленное через форму.

Решение данной проблемы мне удалось найти на сайте sevenspark.com

Теперь все по-порядку:

  1. Необходимо установить плагин Contact Form 7 Dynamic Text Extension, который позволит создавать скрытые служебные поля (да кстати это тоже как  минус к базовому функционалу Contact Form 7:).

2.  В файл function.php вашей активной темы необходимо добавить следующий скриптик:

//Определяем ключ для хранения данных
define( 'CF7_COUNTER', 'cf7-counter' );
 
//Создаем шорткод, который устанавливает значение для поля Dynamic Text Extension
function cf7dtx_counter(){
    $val = get_option( CF7_COUNTER, 0) + 1;  //Увеличиваем текущее значение на 1;
    return $val;
}
add_shortcode('CF7_counter', 'cf7dtx_counter');
 
//Включаем счетчик в работу если письмо было действительно отправлено
function cf7dtx_increment_mail_counter(){
    $val = get_option( CF7_COUNTER, 0) + 1; //Увеличиваем текущее значение на 1
    update_option(CF7_COUNTER, $val); //Обновляем параметры в базе данных
}
add_action('wpcf7_mail_sent', 'cf7dtx_increment_mail_counter');

3. Следующим шагом добавляем «шорткод» скрытого поля в шаблон формы. Выглядит он следующим образом:

[dynamichidden cf7-counter "CF7_counter"]

4. И наконец добавляем шорткод самого счетчика в сообщение которое мы получим:

[cf7-counter]

P.S. Если необходимо задать начальное значение счетчика не 0, то для этого нужно написать нужное значение в строке определения переменной $val как для поля DTX так и для обновления базы. Например:

$val = get_option( CF7_COUNTER, 100) + 1; //Теперь счетчик буде начинаться с 101

Если необходимо обнулить счетчик, то лезем в базу, в таблице ‘options’ находим строку с именем ‘cf7-counter’ им меняем ‘option_value’ на нужное значение.

На этом все, надеюсь это еще кто-нибудь заценит кроме меня (;

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *