Автоматичне пересилання даних із WordPress-форм у Telegram

Привіт:) В одному WordPress проекті мені потрібно було зробити, щоб після відправлення форми дані з неї автоматично пересилалися в особистий чат Telegram. Використовував безкоштовну версію плагіну WPForms.

Розгляну 2 способи.

Спосіб 1. Плагін TelSender

Цей спосіб підходить також і для Contact Form 7 та WooCommerce (Woo).
  1. Створіть свого Telegram-бота, у чат якого будуть надсилатися дані з полів форм. Отримайте його унікальний токен (Token).
  2. Дізнайтеся власний Telegram ID.
  3. В адмін-меню WordPress перейдіть TelSender.
  4. Нижче активуйте опцію Enabled.
  5. Заповніть поля Token та ChatID ( або Telegram ID).
  6. Активуйте повзунок у секції Wp Form (для плагіну WPForms).
У різних версіях плагіну зовнішній вигляд сторінки налаштувань може відрізнятися.
Якщо використовуєте Contact Form 7, активуйте повзунок у секції CF7.
  1. Щоб зберегти налаштування, натисніть кнопку Save.

Щоб перевірити чи надсилаються дані, вгорі натисніть кнопку Send test messages. У чаті вашого бота повинне з'явитися відповідне повідомлення:

Детальніше із налаштуваннями плагіну TelSender можете ознайомитися за цим посиланням

https://coder.org.ua/dev/wordpress/telsender
У безкоштовній версії TelSender немає можливості для конкретної контактної форми задати власний канал Telegram. Це означає, що дані усіх форм сайту будуть відсилатися лише на один Телеграм-канал.

Спосіб 2. Код у functions.php

Наступний код працює лише для Contact Form 7. Розмістіть його у файлі функцій своєї теми або створіть окремий плагін. У коді значення констант TELEGRAM_BOT_TOKEN та TELEGRAM_RECEIVERS замініть на токен власного Telegram боту та Telegram ID відповідно.

/**
 * CF7 to Telegram
 * 
 * https://t.me/mihdan_vent/3734
 * 
 */
const TELEGRAM_BOT_TOKEN = '6256497441:AAGv_5_iMSwLGGBih59l4GTNmB0CvaOpsF4';
const TELEGRAM_RECEIVERS = '278845427';

class MP_CF7_To_Telegram {
    private $args;

    public function __construct() {
        $this->args = [
            'bot_token' => TELEGRAM_BOT_TOKEN,
            'receivers' => [
                TELEGRAM_RECEIVERS,
            ],
        ];
  }

  public function mp_init_hooks() {
      add_filter( 'wpcf7_mail_components', [ $this, 'mp_to_tlg_action' ], 10, 3 );
  }

  public function mp_to_tlg_send_message( $message, $receiver ) {
      $params['text']    = wp_strip_all_tags( $message );
      $params['chat_id'] = (int) $receiver;

      $apiUrl = sprintf(
          'https://api.telegram.org/bot%s/sendMessage?%s',
          $this->args['bot_token'],
          http_build_query( $params )
      );

      $response = wp_remote_get( $apiUrl );

      if ( is_wp_error( $response ) ) {
          error_log( 'Error in CF7 to Telegram: ' . $response );
      } else {
          $responseBody = json_decode( wp_remote_retrieve_body( $response ), true );

          if ( ! $responseBody['ok'] ) {
                error_log( 'Error in CF7 to Telegram: ' . json_encode( $responseBody ) );
          }
      }
  }

  public function mp_to_tlg_action( $components, $form, $instance ) {
      foreach ( $this->args['receivers'] as $receiver ) {
          $this->mp_to_tlg_send_message( $components['body'], $receiver );
      }

      return $components;
  }
}

( new MP_CF7_To_Telegram() )->mp_init_hooks();

Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, блоги на WordPress.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *