background gradient
s2 - IT photo №27611

Как работает хук new_record в плагине Elementor

Разберем action new_record и список всех данных с примерами кода которые можно получить из $record.

Хук elementor_pro/forms/new_record вызывается при успешной отправке формы, созданной с помощью Elementor Pro. Он позволяет разработчикам вмешиваться в процесс обработки формы, добавляя пользовательскую логику или изменяя данные, прежде чем они будут сохранены или отправлены по email.

Хук передает два параметра:

  • $record — объект класса ElementorPro\Modules\Forms\Classes\Record, содержащий все данные формы.
  • $handler — объект класса ElementorPro\Modules\Forms\Classes\Ajax_Handler, который отвечает за обработку отправки формы.

Пример использования

add_action( 'elementor_pro/forms/new_record', 'my_custom_form_handler', 10, 2 );
function my_custom_form_handler( $record, $handler ) {
    // Получаем все данные формы
    $raw_fields = $record->get( 'fields' );
    
    // Пример извлечения данных поля
    $name_field = $record->get_field( 'name' ); // 'name' — это поле формы
    $name_value = $name_field['value']; // Получаем значение поля 'name'

    // Пример отправки данных в лог
    error_log( 'Name: ' . $name_value );

    // Можно добавлять свою логику, к примеру отправку вебхука
	$fields = [];
	foreach ( $raw_fields as $id => $field ) {
	  $fields[ $id ] = $field['value'];
	}
    wp_remote_post(
      'https://URL/',
      [
        'body' => $fields,
      ]
    );
}

Данные, которые можно получить из $record

1. Получение всех полей формы

$fields = $record->get( 'fields' );

Это возвращает массив всех полей формы, где ключами являются названия полей, а значениями — массив с информацией о поле, содержащей такие данные как:

  • id — идентификатор поля;
  • value — значение поля;
  • type — тип поля (например, text, email).

Пример:

foreach ( $fields as $field ) {
  $field_id = $field['id']; // Идентификатор поля
  $field_value = $field['value']; // Значение поля
  error_log( "Field ID: $field_id, Value: $field_value" );
}

2. Получение конкретного поля

Вы можете получить конкретное поле по его ID:

$email_field = $record->get_field( 'email' );
$email_value = $email_field['value'];

3. Получение мета-информации о записи

Помимо полей формы, можно получить мета-данные записи, такие как:

  • IP-адрес отправителя;
  • URL страницы, где была отправлена форма;
  • Время отправки формы.
Пример:
$meta = $record->get( 'meta' );
$ip_address = $meta['remote_ip']; // IP-адрес
$page_url = $meta['page_url']; // URL страницы
$form_submitted_time = $meta['submit_time']; // Время отправки

Если meta возвращает пустоту то попробуйте через $_POST получить данные.

4. Получение исходного массива данных формы

$raw_fields = $record->get_raw_fields();

Это возвращает «сырой» массив данных формы, без фильтрации и обработки.

Пример полного использования:

add_action( 'elementor_pro/forms/new_record', 'custom_form_handler', 10, 2 );
function custom_form_handler( $record, $handler ) {
    // Получаем все поля формы
    $fields = $record->get( 'fields' );
    
    // Пример работы с конкретными полями
    $name_field = $record->get_field( 'name' );
    $email_field = $record->get_field( 'email' );
    
    $name_value = $name_field['value'];
    $email_value = $email_field['value'];
    
    error_log( "Name: $name_value, Email: $email_value" );

    // Получаем мета-данные формы
    $meta = $record->get( 'meta' );
    $ip_address = $meta['remote_ip'];
    $page_url = $meta['page_url'];
    
    error_log( "Form submitted from IP: $ip_address, Page: $page_url" );
}

Этот код демонстрирует базовое использование данных, доступных через объект $record, и может быть расширен в зависимости от ваших потребностей.

Пример с получением заголовка страницы

Заголовок страницы передается в POST при отправке формы. В $record его нет но можно получить таким образом: $_POST[‘referer_title’]

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

Навигация:

Похожие

1728319192_ms_class-singular.php_-_arz-wiki_-_Visual_Studio_Code-min - IT photo №28697
4 1
07 Окт 2024

Что делать, если Rank Math обрезает описание и заголовок?

Я ипользовал шорткод с большим количеством параметров, из-за чего Rank Math обрезал description и title. В итоге шорткод был обрезан а эффективность SEO снизилась. Это произошло из-за ограничений по длине, которые плагин устанавливает для соответствия рекомендациям Google. Как изменить ограничение? Можно изменить ограничение на длину вручную: Откройте seo-by-rank-math /includes /frontend /paper /class-singular.php. Отредактируйте строку: Измените […]

SEO
1727944996_ms_rtx_2_тыс_изображений_найдено_в_Яндекс_Картинках_--min - IT photo №28687
9 1
03 Окт 2024

Какие видеокарты Nvidia входят в топ-30 для игр?

Nvidia уверенно лидирует на рынке видеокарт. По сентябрьскому отчету Steam, все позиции в топ-30 занимают исключительно решения от Nvidia. AMD не успевает за конкурентом, несмотря на постоянные попытки выйти на новый уровень. Открыть таблицу стим Видеокарты Май Июнь Июль Авг Сент Октябрь NVIDIA GeForce RTX 3060 6.19% 5.66% 5.88% 5.51% 5.86% +0.35% NVIDIA GeForce RTX […]

Новости
21437004-cf3d-4d35-aa13-82183efb2955_11zon - IT photo №28678
9 1
02 Окт 2024

В $_GET отсутствуют utm_source, как получить метки в php

Многие сталкиваются с проблемой, когда UTM-метки не передаются полностью через $_GET или $_SERVER. Почему это происходит? Проблема кроется в особенностях парсинга URL. «Не могу получить все UTM-метки из адреса. utm_source и utm_medium обрезаются.» Решения Проверьте URL. Убедитесь, что все параметры правильно закодированы. Используйте parse_str. Эта функция поможет корректно разобрать строку запроса. Проверьте сервер. Некоторые настройки […]

PHPSEO
og_og_1556109592271718992-min - IT photo №28057
2379 7
28 Сент 2024

Как создать аккаунт в Google 2024?

Создание аккаунта Google — это первый шаг к персональным рекомендациям в ютуб и использованию гугл АПИ. В этой статье мы разберем, как легко и быстро создать свой аккаунт Google и обеспечить его безопасность. Зачем нужен Google аккаунт? Личный аккаунт Google открывает доступ к различным сервисам, включая Gmail, YouTube и Google Play. Вот какие возможности открываются […]

Google
1725127246_ms_FASTPANEL_HOSTING_CONTROL_-_Google_Chrome-min - IT photo №28456
36 2
31 Авг 2024

Fastpanel не обновляет SSL [Решено]

Обновление SSL-сертификата на моем сайте превратилось в квест. И я наконец-то нашел решение, которое сработало. Уже вторую или третью неделю я пытался обновить SSL-сертификат для своего сайта через FastPanel, и каждый раз сталкивался с одной и той же ошибкой: Эта ошибка говорила о блокеровке к файлу, необходимому для проверки домена. В какой-то момент я вспомнил, […]

SEO
1725015979_ms_function.php_-_kakdela_-_Visual_Studio_Code_[Админ-min - IT photo №28453
21 3
30 Авг 2024

Самый быстрый поиск по Загловку в WordPress

Функция get_page_by_title() устарела, и WordPress предлагает использовать медленный запрос WP_Query с параметром s. wp_query медленный, ресурсоемкий и может негативно повлиять на работу вашего сайта, особенно если у вас большая база данных из 700.000 постов. Вы можете использовать мою функцию для поиска по заголовку значительно быстрее и эффективнее. При этом код будет защищен от SQL-инъекций и других […]

Wordpress