wphow.ru wordpress WPHow

Как добавить пользовательское поле в Gravity Forms через функции WordPress

Почему стоит добавлять поля через функции, а не через интерфейс Gravity Forms

Gravity Forms — популярный плагин для создания форм в WordPress, который отлично подходит для сбора информации от пользователей. В стандартном интерфейсе формы можно легко добавлять текстовые поля, выпадающие списки и другие элементы. Но иногда нужен более глубокий контроль: динамическое добавление полей, условная логика, изменение значений, интеграция с внешними данными.

Добавление и настройка полей через функции WordPress позволяет создавать более гибкие формы, управлять логикой на уровне кода и автоматизировать многие процессы. Это особенно полезно, если вы разработчик и хотите интегрировать формы в сложные проекты.

В этой статье мы рассмотрим, как программно добавить пользовательское поле в Gravity Forms, используя хуки и фильтры, а также как обработать данные после отправки формы.

Добавление пользовательского поля через фильтр wphow_gform_pre_render

Gravity Forms позволяет изменять форму перед выводом с помощью фильтра gform_pre_render. Мы создадим функцию wphow_add_custom_field_to_form, которая добавит новое поле в форму с определённым ID.

function wphow_add_custom_field_to_form( $form ) {
    // Проверяем ID формы, например 1
    if ( $form['id'] != 1 ) {
        return $form;
    }

    // Создаем новое текстовое поле
    $new_field = array(
        'id' => 1001, // ID должен быть уникальным и больше существующих
        'label' => 'Дополнительная информация (программно добавленное поле)',
        'type' => 'text',
        'isRequired' => true,
        'inputName' => 'additional_info',
        'size' => 'medium'
    );

    // Добавляем поле в конец первого поля страницы
    $form['fields'][] = GF_Fields::create( $new_field );
    return $form;
}
add_filter( 'gform_pre_render_1', 'wphow_add_custom_field_to_form' );
add_filter( 'gform_pre_validation_1', 'wphow_add_custom_field_to_form' );
add_filter( 'gform_pre_submission_filter_1', 'wphow_add_custom_field_to_form' );

Здесь мы используем фильтр только для формы с ID 1. Важно добавить фильтры gform_pre_validation и gform_pre_submission_filter для корректной работы поля при валидации и отправке.

Поле будет обязательным к заполнению, а его имя для отправки — additional_info. Это позволит удобно работать с данными при обработке.

Обработка данных пользовательского поля после отправки формы

После того как пользователь отправил форму, полезно выполнить дополнительную обработку или сохранить данные в мета-поле пользователя, если он авторизован.

Для этого используем экшен gform_after_submission:

function wphow_handle_custom_field_after_submission( $entry, $form ) {
    if ( $form['id'] != 1 ) {
        return;
    }

    $additional_info = rgar( $entry, '1001' ); // ID нашего поля

    // Пример: сохраняем в пользовательское мета (только если юзер залогинен)
    $user_id = get_current_user_id();
    if ( $user_id && ! empty( $additional_info ) ) {
        update_user_meta( $user_id, 'wphow_additional_info', sanitize_text_field( $additional_info ) );
    }

    // Можно отправить уведомление, записать в лог или интегрировать с CRM
}
add_action( 'gform_after_submission_1', 'wphow_handle_custom_field_after_submission', 10, 2 );

Таким образом, вы можете встраивать свою логику обработки данных, например, отправлять на почту, записывать в сторонние сервисы или менять поведение сайта.

Пример динамического заполнения поля из внешнего источника

Иногда нужно, чтобы значение поля формировалось динамически, например, подставлять текущую дату, данные пользователя или информацию с API.

Используем фильтр gform_field_value_имяполя для динамического значения:

add_filter( 'gform_field_value_additional_info', 'wphow_populate_dynamic_value' );
function wphow_populate_dynamic_value( $value ) {
    // Например, подставляем дату и время
    return date( 'Y-m-d H:i:s' );
}

Для этого в настройках поля в разделе «Advanced» укажите параметр «Allow field to be populated dynamically» и введите имя параметра additional_info. Тогда при загрузке формы поле заполнится значением из функции.

Советы по отладке и повышению надежности кода

При работе с функциями и хуками Gravity Forms важно:

  • Всегда проверять ID формы и полей, чтобы не нарушить другие формы.
  • Использовать функции безопасности WordPress для очистки и фильтрации входящих данных (sanitize_text_field, esc_html и т.д.).
  • Тестировать работу поля на разных этапах — рендеринг, валидация, отправка.
  • При необходимости добавлять поддержку AJAX для динамических форм.
  • Документировать код, чтобы в будущем было проще поддерживать.

Если вы используете кастомные поля часто, имеет смысл выделить логику в отдельный файл и подключать через functions.php вашей темы или в собственном плагине.

Альтернативные плагины и расширения для кастомизации форм

Кроме Gravity Forms, существуют другие плагины с возможностью расширения полей через код:

  • Contact Form 7 — с помощью хуков можно добавлять свои поля и обрабатывать данные.
  • WPForms — предлагает удобный API для расширения форм.
  • Formidable Forms — поддерживает программное добавление и динамическое заполнение.

Для Gravity Forms также есть множество аддонов, которые могут помочь с динамическими значениями, условной логикой и интеграциями.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙