Categories: Wordpress

Как сделать счетчик для Contact Form 7 плагина

Счетчик для Contact Form 7 – это возможность последовательного подсчета заполненных и отправленных форм. Таким образом, каждому респонденту можно присвоить индивидуальный номер.

Мне очень был нужен такой счетчик для одного их моих сайтов и я нашла решение на сайте SevenSpark How to create a mail counter for Contact Form 7
Для работы счетчика у вас должны быть установлены следующие расширения для Contact Form 7:

А далее все очень просто.

  1. В файл function.php вашей темы нужно добавить следующий код:
    //Define the key to store in the database
    define( 'CF7_COUNTER', 'cf7-counter' );
     
    //Create the shortcode which will set the value for the DTX field
    function cf7dtx_counter(){
        $val = get_option( CF7_COUNTER, 0) + 1;  //Increment the current count
        return $val;
    }
    add_shortcode('CF7_counter', 'cf7dtx_counter');
     
    //Action performed when the mail is actually sent by CF7
    function cf7dtx_increment_mail_counter(){
        $val = get_option( CF7_COUNTER, 0) + 1; //Increment the current count
        update_option(CF7_COUNTER, $val); //Update the settings with the new count
    }
    add_action('wpcf7_mail_sent', 'cf7dtx_increment_mail_counter');

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

  2. В саму форму, добавьте следующее поле. Это поле будет скрыто, и отображаться в форме не будет. Оно нужно для присвоения номера.
    [dynamichidden cf7-counter "CF7_counter"]
  3. Если вам, где-либо на сайте нужно вывести количество уже заполненных форм, тогда используйте шоткод:
    Count: [cf7_counter]

    или php вариант для внедрения в шаблон сайта:

    < ?php echo get_option( CF7_COUNTER, 0); ?>

Также автор предлагает вариант для установки нескольких подсчетов:

//Define the key to store in the database
define( 'CF7_COUNTER', 'cf7-counter' );

//Create the shortcode which will set the value for the DTX field
function cf7dtx_counter($atts){
extract( shortcode_atts( array(
'counter_id' => '',
), $atts ) );
$val = get_option( CF7_COUNTER . $counter_id, 0) + 1; //Increment the current count
return $val;
}
add_shortcode('CF7_counter', 'cf7dtx_counter');


Шоткод для формы:

[dynamichidden cf7-counter "CF7_counter counter_id='1' "]

Но я этот вариант не тестировала, поэтому ничего сказать не могу.

Спасибо большое автору. Для меня это оказалось незаменимое решение.

View Comments

  • Здравствуйте! Сейчас плагин Contact Form Database не работает. То есть достаточно установить плагин Contact Form 7 Dynamic Text Extension и повторить вашу инструкцию и счетчик отправлений работает. (тьфу-тьфу)))))

  • Count: [cf7-counter] - тут ошибка.
    Правильней - Count: [CF7_counter]

Recent Posts

  • Excel

Как правильно открыть CSV с многострочными ячейками в Excel

Если при открытие csv файла с помощью excel У все поехали ячейки - это простой… Read More

% дней назад
  • Python

Загрузка проекта на Github и Автодеплой на сервер

Простые шаги как происходит Загрузка проекта на Github и Автодеплой на сервер Сделайте работу проще! Read More

% дней назад
  • Python
  • Полезная минутка

Миграция базы данных в проектах Python

Миграция базы данных - помогают с этим библиотеки SQLAlchemy и Alembic. Read More

% дней назад
  • Python

Команды Git – Шпаргалка по основным командам Git

Основные Команды Git, которые точно пригодятся. Сохрани себе шпаргалку Git Read More

% дней назад
  • Python

Установка PostgreSQL на сервер Ubuntu и подключение через pgAdmin

Установка PostgreSQL на сервер Read More

% дней назад
  • Полезная минутка

Как создать PrimaryKey для таблицы в PostgreSQL

Как создать PrimaryKey в талице базы данных SQL [РЕШЕНО] Ошибка relation tablename_id_seq doesn't exist Read More

% дней назад