WPForms: как сделать отсрочку отправки формы в WordPress

В некоторых случаях при работе с WPForms в WordPress возникает задача реализовать отсрочку отправки формы. Например, нужно показать пользователю сообщение с предупреждением и дать время на отмену отправки, или же организовать задержку для дополнительной проверки данных перед отправкой на сервер. В этой статье я подробно расскажу, как реализовать такую отсрочку отправки формы в WPForms с помощью JavaScript и PHP, а также приведу примеры полезных плагинов и интеграций.

Почему нужна отсрочка отправки формы в WPForms

По умолчанию WPForms отправляет формы сразу после нажатия кнопки отправки и успешной валидации. Однако бывают ситуации, когда важно контролировать момент отправки. Вот несколько примеров:

  • Показать пользователю предупреждение и дать время отменить отправку.
  • Выполнить дополнительные проверки или запросы к удалённым сервисам перед отправкой.
  • Реализовать анимацию или таймер на стороне клиента перед отправкой.
  • Избежать случайных двойных отправок формы.

В WPForms нет встроенного инструмента для отсрочки отправки, но с помощью кастомного кода и JavaScript это вполне реализуемо.

Отсрочка отправки формы WPForms на стороне клиента с JavaScript

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

Пример кода, который можно добавить в файл темы или через плагин для пользовательских скриптов:

function wpformslocal_delay_submit() {
  ?>
  <script>
  document.addEventListener('DOMContentLoaded', function() {
    const form = document.querySelector('.wpforms-form');
    if (!form) return;

    form.addEventListener('submit', function(e) {
      e.preventDefault(); // отменяем стандартную отправку

      if (form.dataset.submitting) return; // защита от повторной отправки
      form.dataset.submitting = 'true';

      // Показываем сообщение или анимацию
      alert('Форма отправится через 3 секунды. Отмена невозможна.');

      setTimeout(function() {
        form.removeEventListener('submit', arguments.callee); // убираем текущий обработчик
        form.submit(); // программно отправляем форму
      }, 3000);
    });
  });
  </script>
  <?php
}
add_action('wp_footer', 'wpformslocal_delay_submit');

В этом примере при нажатии кнопки отправки сначала показывается alert с сообщением, затем через 3 секунды форма отправляется. Если нужно более сложное окно с возможностью отмены, можно заменить alert на кастомное модальное окно.

Пояснения к коду

Мы используем событие submit на форме WPForms с классом wpforms-form. Отменяем стандартную отправку, включаем флаг отправки, чтобы избежать повторных кликов, показываем сообщение, ставим таймер, после которого снимаем обработчик и вызываем form.submit() для реальной отправки.

Обработка задержки отправки на стороне сервера

Иногда нужно не просто задержать отправку, а выполнить дополнительные проверки на сервере перед сохранением данных. Для этого можно использовать фильтры WPForms.

Например, фильтр wpforms_process_before_save позволяет прервать или изменить процесс сохранения данных.

Пример, который откладывает обработку на 5 секунд (имитация задержки):

function wpformslocal_delay_process($fields, $entry, $form_data) {
  sleep(5); // задержка 5 секунд
  return $fields;
}
add_filter('wpforms_process_before_save', 'wpformslocal_delay_process', 10, 3);

Это не самый эффективный способ с точки зрения UX, так как пользователь будет ждать ответа сервера. Лучше использовать JavaScript-задержку для интерактивности, а серверные проверки делать быстро.

Примеры плагинов для расширения функционала WPForms с задержкой

Если вы хотите более гибкие решения без написания кода, обратите внимание на следующие плагины:

  • My Popup — позволяет показывать всплывающие окна перед отправкой, что можно использовать для подтверждения и задержки.
  • Clearfy Pro — оптимизирует работу форм и добавляет дополнительные настройки, можно использовать для предотвращения двойных отправок.

Эти плагины можно интегрировать с WPForms для расширения контроля над процессом отправки.

Применение: отсрочка с возможностью отмены отправки

Рассмотрим более сложный пример с модальным окном и кнопками для подтверждения или отмены отправки.

function wpformslocal_confirm_submit() {
  ?>
  <style>
    #wpform-confirm-modal {
      display: none;
      position: fixed;
      top: 0; left: 0; right: 0; bottom: 0;
      background: rgba(0,0,0,0.5);
      justify-content: center;
      align-items: center;
      z-index: 9999;
    }
    #wpform-confirm-content {
      background: #fff;
      padding: 20px;
      border-radius: 5px;
      max-width: 400px;
      text-align: center;
    }
    #wpform-confirm-content button {
      margin: 10px;
      padding: 8px 16px;
    }
  </style>
  <div id="wpform-confirm-modal">
    <div id="wpform-confirm-content">
      <p>Вы уверены, что хотите отправить форму?</p>
      <button id="wpform-confirm-yes">Да, отправить</button>
      <button id="wpform-confirm-no">Отмена</button>
    </div>
  </div>
  <script>
    document.addEventListener('DOMContentLoaded', function() {
      const form = document.querySelector('.wpforms-form');
      const modal = document.getElementById('wpform-confirm-modal');
      const btnYes = document.getElementById('wpform-confirm-yes');
      const btnNo = document.getElementById('wpform-confirm-no');

      if (!form) return;

      form.addEventListener('submit', function(e) {
        e.preventDefault();
        modal.style.display = 'flex';
      });

      btnYes.addEventListener('click', function() {
        modal.style.display = 'none';
        form.submit();
      });

      btnNo.addEventListener('click', function() {
        modal.style.display = 'none';
      });
    });
  </script>
  <?php
}
add_action('wp_footer', 'wpformslocal_confirm_submit');

Такой подход даёт пользователю возможность подтвердить или отменить отправку, а сама отправка происходит только после подтверждения.

Итоги и рекомендации

Отсрочка отправки формы в WPForms — это несложная задача, если использовать возможности JavaScript и фильтры WordPress. Главное — учитывать пользовательский опыт, не задерживать серверные операции и информировать пользователя.

Для простых задержек отлично подойдёт JavaScript с таймером, для более сложных сценариев — модальные окна и дополнительные проверки. Интеграция с плагинами типа My Popup поможет реализовать красивые и удобные интерфейсы без глубокого программирования.

Если хотите автоматизировать и оптимизировать формы, рекомендую ознакомиться с Clearfy Pro и My Popup на wpshop.ru.

Отправка данных из WPForms в внешние сервисы через Webhook
17.03.2026
WPForms и Gravity Forms: сравнение и выбор плагина форм для WordPress
10.04.2026
Оптимизация AJAX форм в WordPress с помощью WPForms
03.12.2025
WPForms: динамические поля с внешней логикой на примере кастомных условий
03.04.2026
WPForms: отладка ошибок и ведение логов в WordPress
27.02.2026