WPForms: как собирать данные из нескольких форм в одну таблицу WordPress

Работа с несколькими формами на сайте WordPress часто вызывает задачу объединения данных в одну структуру для удобного анализа и обработки. В этой статье мы разберём, как с помощью плагина WPForms собирать данные из разных форм в одну общую таблицу в базе данных WordPress. Это полезно, когда вам нужно агрегировать данные, например, из контактных форм, форм заявок и регистрации, в одну таблицу для последующего использования.

Проблема сбора данных из нескольких форм WPForms

По умолчанию WPForms хранит данные каждой отправленной формы в таблице wp_wpforms_entries, при этом каждая запись связана с конкретной формой. Если на сайте несколько форм, то данные хранятся раздельно, что усложняет их анализ. Например, если у вас есть форма обратной связи и форма заявки, и вы хотите получить единый список всех контактов, придётся создавать сложные запросы к базе или выгружать данные вручную.

Кроме того, стандартный интерфейс WPForms не предоставляет возможности объединённого просмотра данных из нескольких форм. Чтобы решить эту проблему, можно создать собственное решение, которое будет записывать данные из нескольких форм в отдельную пользовательскую таблицу.

Создание отдельной таблицы для объединённых данных

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

function wpformru_create_custom_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpformru_combined_entries';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
      id BIGINT(20) NOT NULL AUTO_INCREMENT,
      form_id BIGINT(20) NOT NULL,
      entry_id BIGINT(20) NOT NULL,
      name VARCHAR(255) DEFAULT '',
      email VARCHAR(255) DEFAULT '',
      phone VARCHAR(100) DEFAULT '',
      submitted_at DATETIME DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (id),
      KEY form_id (form_id),
      KEY email (email)
    ) $charset_collate;";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wpformru_create_custom_table' );

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

Обработка отправки форм WPForms и запись данных

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

function wpformru_save_combined_entry( $fields, $entry, $form_data ) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpformru_combined_entries';

    $name = '';
    $email = '';
    $phone = '';

    foreach ( $fields as $field ) {
        if ( strtolower($field['name']) === 'name' ) {
            $name = sanitize_text_field( $field['value'] );
        } elseif ( strtolower($field['name']) === 'email' ) {
            $email = sanitize_email( $field['value'] );
        } elseif ( strtolower($field['name']) === 'phone' ) {
            $phone = sanitize_text_field( $field['value'] );
        }
    }

    if ( $email ) { // Обязательное поле для записи
        $wpdb->insert( 
            $table_name, 
            [
                'form_id' => intval( $form_data['id'] ),
                'entry_id' => intval( $entry['id'] ),
                'name' => $name,
                'email' => $email,
                'phone' => $phone,
                'submitted_at' => current_time( 'mysql' ),
            ],
            [ '%d', '%d', '%s', '%s', '%s', '%s' ]
        );
    }
}
add_action( 'wpforms_process_complete', 'wpformru_save_combined_entry', 10, 3 );

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

Вывод объединённых данных в админке WordPress

Для удобства просмотра можно создать собственную страницу в админке, где вывести таблицу с объединёнными записями. Используем стандартные методы WordPress для создания меню и вывода таблиц.

Добавим пункт меню и страницу:

function wpformru_admin_menu() {
    add_menu_page(
        'Объединённые данные форм',
        'Объединённые формы',
        'manage_options',
        'wpformru_combined_entries',
        'wpformru_render_combined_entries_page',
        'dashicons-feedback',
        30
    );
}
add_action( 'admin_menu', 'wpformru_admin_menu' );

function wpformru_render_combined_entries_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpformru_combined_entries';
    $results = $wpdb->get_results( "SELECT * FROM $table_name ORDER BY submitted_at DESC" );

    echo '<div class="wrap"><h1>Объединённые данные форм WPForms</h1>';
    echo '<table class="wp-list-table widefat fixed striped">';
    echo '<thead><tr><th>ID</th><th>Form ID</th><th>Entry ID</th><th>Имя</th><th>Email</th><th>Телефон</th><th>Дата отправки</th></tr></thead><tbody>';

    if ( $results ) {
        foreach ( $results as $row ) {
            echo '<tr>';
            echo '<td>' . esc_html( $row->id ) . '</td>';
            echo '<td>' . esc_html( $row->form_id ) . '</td>';
            echo '<td>' . esc_html( $row->entry_id ) . '</td>';
            echo '<td>' . esc_html( $row->name ) . '</td>';
            echo '<td>' . esc_html( $row->email ) . '</td>';
            echo '<td>' . esc_html( $row->phone ) . '</td>';
            echo '<td>' . esc_html( $row->submitted_at ) . '</td>';
            echo '</tr>';
        }
    } else {
        echo '<tr><td colspan="7">Данные не найдены</td></tr>';
    }

    echo '</tbody></table></div>';
}

Такой интерфейс позволит быстро просматривать все данные с разных форм в одном месте.

Дополнительные советы и расширения

Если вам нужно более сложное объединение или хранение дополнительных полей, можно расширить таблицу и логику обработки. Например, добавлять JSON с дополнительными данными или создавать несколько таблиц для разных типов форм.

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

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

Использование плагинов для расширения функционала

Существует ряд плагинов, которые позволяют расширить возможности WPForms или упростить работу с данными:

  • Clearfy Pro — для оптимизации и управления базой данных, может помочь с кастомными таблицами.
  • WPRemark — для создания отзывов и комментариев, может быть полезен если ваши формы связаны с отзывами.

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

Как избежать конфликтов плагинов в WordPress
29.11.2025
WPForms динамические поля с расчетом значений в WordPress
20.03.2026
WPForms: как сделать отсрочку отправки формы в WordPress
12.02.2026
WPForms и WooCommerce: автоматическая передача данных обязательных полей из формы в заказ
03.05.2026
WPForms: как создать многостраничную форму в WordPress
09.01.2026