Разберем 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’]