Заявки в телеграм через Elementor PRO

В бесплатном элементоре формы создаются так же через плагины, о которых я рассказал выше. А вот с формами, созданными в Elementor PRO всё немного сложнее, так как там у них свой алгоритм работы.

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

Ниже я разместил код, который поможет нам в этом. Чтобы он заработал, вам нужно на своем сайте установить любой плагин со сниппетами. Я лично пользуют Woody code snippets, но вы можете использовать любой другой.

Просто копируете код, добавляете новый PHP сниппет и вставляете туда этот код, добавив токен бота и ID чата в нужные поля. Если вы хотите, чтобы в телеграм чат приходили заявки со всего сайта, тогда выбираете, чтобы он запускался везде. Если только на определенных формах, тогда выбираете «Запускать везде, где есть шорткод» и на нужных страницах добавляете элемент Шорткод (лучше перед формой или в начале страницы).

add_action( 'elementor_pro/forms/new_record', function( $record, $handler ) {

    $bot_token = ""; // Вставьте между кавычками токен вашего бота
    $chat_id = ""; // Вставьте между кавычками ID чата, в который должны приходить заявки и не забудьте минус

	$raw_fields = $record->get( 'fields' );
    $arr = array();
    $txt = "[Новая заявка] тест %0A"; // Заголовок сообщения в телеграм. Между кавычками можно написать что угодно. Например, помогает понимать, откуда пришла заявка, если заявки приходят с нескольких сайтов.

        foreach ( $raw_fields as $id => $field ) {
          $txt .= "<b>".$field['title']."</b>: ".$field['value']."%0A";
        }

    fopen("https://api.telegram.org/bot{$bot_token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}&disable_web_page_preview=true","r"); // Открывает ссылку, по которой и уходит нужный текст в телеграм

}, 10, 2 );
?>

Сообщения с названием формы

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

add_action( 'elementor_pro/forms/new_record', function( $record, $handler ) {

    $bot_token = ""; // Вставьте между кавычками токен вашего бота
    $chat_id = ""; // Вставьте между кавычками ID чата, в который должны приходить заявки и не забудьте минус
    $form_name = $record->get_form_settings( 'form_name' ); // Берет из настроек формы название формы и записывает её в переменную $form_name
	$raw_fields = $record->get( 'fields' );
    $arr = array();
    $txt = $form_name . "%0A"; // Выводит в заголовке формы данные из переменной $form_name

        foreach ( $raw_fields as $id => $field ) {
          $txt .= "<b>".$field['title']."</b>: ".$field['value']."%0A";
        }

    fopen("https://api.telegram.org/bot{$bot_token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}&disable_web_page_preview=true","r"); // Открывает ссылку, по которой и уходит нужный текст в телеграм

}, 10, 2 );
?>