Как добавить собственные поля в WPForms и обработать их в WordPress

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

Почему стоит добавлять собственные поля в WPForms

Стандартный набор полей WPForms охватывает большинство типичных задач: текстовые поля, email, чекбоксы, выпадающие списки и т.д. Однако для сложных проектов часто нужны специализированные поля — например, загрузка нескольких файлов с дополнительными параметрами, ввод данных с валидацией по особым правилам или скрытые поля с динамическим значением.

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

В этом материале мы рассмотрим именно технический аспект — как программно расширить WPForms, не ломая обновляемость плагина и соблюдая стандарты WordPress.

Как добавить новое поле в WPForms: пример с кастомным полем "ID пользователя"

Для начала создадим простое текстовое поле, которого нет в базовом наборе WPForms, — например, поле для ввода ID пользователя, которое мы потом сможем использовать в обработке.

WPForms позволяет добавлять собственные поля через фильтр wpforms_field_types. Создадим функцию с префиксом wpformru_ для добавления нового типа поля:

function wpformru_add_custom_userid_field( $fields ) {
    $fields['user_id'] = [
        'name'    => __( 'User ID', 'wpformru' ),
        'icon'    => 'fa-id-badge',
        'templates' => [
            'single' => [
                'template' => 'text',
                'template_options' => [
                    'label'       => true,
                    'required'    => true,
                    'input_type'  => 'text',
                ],
            ],
        ],
    ];
    return $fields;
}
add_filter( 'wpforms_field_types', 'wpformru_add_custom_userid_field' );

Этот код добавит в редактор форма новый тип поля с названием «User ID» и иконкой. Оно будет работать как обычное текстовое поле, но позволит нам в дальнейшем реализовать свою логику.

Добавление поля в редактор форм

После добавления фильтра в файл functions.php вашей темы или в отдельный плагин, в редакторе WPForms появится новое поле в списке доступных. Просто перетащите его в форму и настройте по необходимости.

Обратите внимание, что поле мы пометили как обязательное ('required' => true), это важно для корректного сбора данных.

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

Добавить поле — только полдела, нужно еще обработать его содержимое. WPForms предоставляет несколько крючков для кастомной обработки, например wpforms_process_validate для валидации и wpforms_process_complete для действий после успешной отправки.

Валидация поля User ID

Предположим, нам нужно убедиться, что ID пользователя — это число от 1 до 10000. Добавим валидацию:

function wpformru_validate_userid_field( $fields, $entry, $form_data ) {
    foreach ( $fields as $field_id => $field ) {
        if ( 'user_id' === $field['type'] ) {
            $value = trim( $field['value'] );
            if ( ! is_numeric( $value ) || $value < 1 || $value > 10000 ) {
                wpforms()->process->errors[ $form_data['id'] ][ $field_id ] = __( 'Введите корректный ID пользователя от 1 до 10000.', 'wpformru' );
            }
        }
    }
}
add_action( 'wpforms_process_validate', 'wpformru_validate_userid_field', 10, 3 );

Этот код проверит поле при отправке и при ошибке выдаст сообщение, блокируя отправку формы.

Сохранение и использование данных после отправки

После успешной отправки нам может понадобиться сохранить ID пользователя в метаданных записи или отправить его в CRM.

Пример записи в пользовательские метаданные записи (post meta), если форма связана с созданием записи:

function wpformru_save_userid_to_postmeta( $fields, $entry, $form_data ) {
    $post_id = wpformru_get_post_id_from_entry( $entry ); // Ваша логика получения ID записи
    if ( ! $post_id ) {
        return;
    }
    foreach ( $fields as $field ) {
        if ( 'user_id' === $field['type'] ) {
            update_post_meta( $post_id, '_user_id', sanitize_text_field( $field['value'] ) );
        }
    }
}
add_action( 'wpforms_process_complete', 'wpformru_save_userid_to_postmeta', 10, 3 );

Важно всегда использовать функции очистки данных, например sanitize_text_field(), чтобы избежать XSS и других уязвимостей.

Примеры популярных плагинов для расширения WPForms

Иногда проще использовать готовые расширения, которые позволяют добавлять кастомные поля и интегрироваться с внешними сервисами. Вот несколько полезных плагинов:

  • WPForms Custom Captcha — добавляет в формы расширенные капчи с возможностью настройки.
  • WPForms Signature Addon — позволяет добавлять поле подписи, полезно для договоров и согласий.
  • WPForms PayPal Standard Addon — интеграция с PayPal для приема платежей.
  • WPForms User Registration Addon — создание форм регистрации с кастомными полями.

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

Советы по безопасности и производительности при работе с кастомными полями

При добавлении любых нестандартных полей и обработке данных важно следовать ряду правил:

  • Валидация и санитизация. Никогда не доверяйте данным с фронтенда, всегда проверяйте и очищайте их в PHP.
  • Используйте nonce. WPForms уже использует nonce, но если добавляете собственные AJAX-обработчики — обязательно проверяйте nonce для защиты от CSRF.
  • Минимизируйте нагрузку. Не выполняйте тяжелые операции при каждой отправке формы без крайней необходимости.
  • Обрабатывайте ошибки корректно. Информируйте пользователя о проблемах понятно и не раскрывайте внутренние детали.

Соблюдение этих рекомендаций поможет сохранить стабильность сайта и безопасность данных.

Заключение

Добавление собственных полей в WPForms — мощный способ расширить возможности форм на вашем сайте. Используя фильтры и хуки плагина, вы можете создавать уникальные формы с кастомной логикой и интеграцией. В статье мы рассмотрели пример добавления поля, его валидацию и сохранение данных, а также упомянули полезные расширения и рекомендации по безопасности. Это позволит вам создавать формы, идеально подходящие под конкретные задачи.

WPForms: как автоматически сохранять данные форм в базу данных WordPress
18.12.2025
WPForms динамические поля с построением зависимых списков в WordPress
09.12.2025
WPForms: как создать многостраничную форму в WordPress
09.01.2026
WPForms отладка проблем с переадресацией после отправки формы в WordPress
06.12.2025
Как создать собственный шорткод для WPForms в WordPress
07.11.2025