Контактная форма 7 – Задержка автопо ответам

Вопрос или проблема

Я ищу способ задержать автоматический ответ (mail_2) от Contact Form 7 на 2 дня. Но у меня нет ни малейшего представления, как это сделать. Надеюсь, у вас есть идея.

Я использую следующий код в functions.php

add_action( 'wpcf7_before_send_mail', 'send_custom_respond' );

function send_custom_respond($WPCF7_ContactForm) {

  $submission = WPCF7_Submission::get_instance();
  $posted_data = $submission->get_posted_data();
  $contact_name = $posted_data['your-name'];
  $contact_email = $posted_data['your-email'];

  $mail_2 = $WPCF7_ContactForm->prop('mail_2') ;
  $mail_2['subject'] = "Нравится пробный период?";
  $mail_2['body'] = "Привет ". $contact_name . ",\n как проходит пробный период? Дайте нам знать, если вам нужна помощь.";

  $WPCF7_ContactForm->set_properties(array("mail_2" => $mail_2));

  return $WPCF7_ContactForm;
}

Проверьте этот плагин: https://wordpress.org/plugins/delayed-notifications-for-contact-form-7/

Он, кажется, делает то, о чем вы просите.

Ответ или решение

Задержка автоматических ответов в Contact Form 7: пошаговое руководство

Если вы ищете способ задержать автоматический ответ (mail_2) от Contact Form 7 на 2 дня, данный ответ поможет вам разобраться в этом процессе. В этом руководстве мы обсудим, как вы можете реализовать такую задержку с помощью кода, а также рассмотрим альтернативное решение с использованием плагина.

Подход с использованием кода

Вы уже использовали следующий код в файле functions.php, который отвечает за отправку автоматического письма:

add_action( 'wpcf7_before_send_mail', 'send_custom_respond' );

function send_custom_respond($WPCF7_ContactForm) {

  $submission = WPCF7_Submission::get_instance();
  $posted_data = $submission->get_posted_data();
  $contact_name = $posted_data['your-name'];
  $contact_email = $posted_data['your-email'];

  $mail_2 = $WPCF7_ContactForm->prop('mail_2');
  $mail_2['subject'] = "Enjoying the trial?";
  $mail_2['body'] = "Hi ". $contact_name . ",\n how's the trial? Let us know if you need some assistance.";

  $WPCF7_ContactForm->set_properties(array("mail_2" => $mail_2));

  return $WPCF7_ContactForm;
}

Однако, для реализации задержки в отправке этого письма, вам потребуется внести дополнительные изменения. К сожалению, стандартный функционал Contact Form 7 не поддерживает задержку автоматических ответов. Поэтому более надежным будет использование PHP функций для реализации такого поведения.

Решение с использованием wp_schedule_event

Для этого вы можете использовать функции для планирования задач в WordPress, такие как wp_schedule_event. Однако важно помнить, что это требует наличия Cron Jobs, работающих на вашем сервере. Вот простой пример кода, который вы можете использовать:

  1. Запланируйте событие:
    Добавьте следующий код в functions.php. Он создаст событие, которое будет запускаться через 2 дня после отправки формы.
add_action('wpcf7_mail_sent', 'schedule_delayed_email');

function schedule_delayed_email($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        $contact_email = $data['your-email'];

        // Запланируйте событие через 2 дня
        $timestamp = time() + (2 * DAY_IN_SECONDS);
        wp_schedule_single_event($timestamp, 'send_delayed_email', array($contact_email));
    }
}

add_action('send_delayed_email', 'send_delayed_email_function');

function send_delayed_email_function($contact_email) {
    $subject = "Enjoying the trial?";
    $body = "Hi there, how's the trial? Let us know if you need some assistance.";

    wp_mail($contact_email, $subject, $body);
}
  1. Объяснение кода:
    • Мы используем хук wpcf7_mail_sent, чтобы запланировать отправку письма.
    • С помощью wp_schedule_single_event мы устанавливаем задачу через 2 дня.
    • В функции send_delayed_email_function происходит отправка почты с использованием стандартной функции wp_mail.

Этот метод позволяет вам эффективно задерживать отправку автоматического ответа.

Альтернативное решение с плагином

Если вы не хотите внедрять код самостоятельно, вы также можете рассмотреть установку плагина, который уже предоставляет функционал задержки отправки уведомлений. Например, можем использовать плагин Delayed Notifications for Contact Form 7.

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

Заключение

В зависимости от вашего уровня комфорта с кодированием, вы можете выбрать один из представленных подходов для решения задачи с задержкой автоматического ответа в Contact Form 7. Если вы уверены в своих навыках, можете интегрировать предложенный код. В противном случае рекомендуется использовать плагин, что существенно упростит вашу задачу.

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

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

Капча загружается...