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

У різних версіях плагіну зовнішній вигляд сторінки налаштувань може відрізнятися.
Якщо використовуєте Contact Form 7, активуйте повзунок у секції CF7.
- Щоб зберегти налаштування, натисніть кнопку Save.
Щоб перевірити чи надсилаються дані, вгорі натисніть кнопку Send test messages. У чаті вашого бота повинне з'явитися відповідне повідомлення:

Детальніше із налаштуваннями плагіну TelSender можете ознайомитися за цим посиланням
https://coder.org.ua/dev/wordpress/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();
