Contact Form 7: динамические поля и подгрузка данных из базы WordPress

Contact Form 7 — один из самых популярных плагинов для создания форм в WordPress, но стандартный функционал не всегда покрывает задачи по динамическому заполнению полей из базы данных сайта. В этой статье разберём, как создавать динамические поля в Contact Form 7 и подгружать в них данные из пользовательской таблицы WordPress или других источников.

Зачем нужны динамические поля в Contact Form 7

Стандартные поля Contact Form 7 — это статичные элементы, которые задаются вручную через интерфейс. Но часто требуется, чтобы:

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

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

Создание шорткода для динамического поля Contact Form 7

Contact Form 7 поддерживает использование шорткодов в значениях полей. Чтобы создать динамическое поле, создадим PHP-функцию с префиксом cf7ru_ и зарегистрируем её как шорткод в WordPress.

<?php
// Регистрируем шорткод [cf7ru_dynamic_select]
function cf7ru_dynamic_select_func() {
    global $wpdb;
    // Пример: получим список категорий из таблицы wp_terms
    $results = $wpdb->get_results("SELECT term_id, name FROM {$wpdb->terms} ORDER BY name ASC");
    
    if (empty($results)) {
        return ''; // Нет данных
    }
    
    $options = '';
    foreach ($results as $row) {
        $options .= sprintf('<option value="%d">%s</option>', esc_attr($row->term_id), esc_html($row->name));
    }
    
    // Возвращаем HTML select с опциями
    return '<select name="your-category">' . $options . '</select>';
}
add_shortcode('cf7ru_dynamic_select', 'cf7ru_dynamic_select_func');
?>

В коде выше мы формируем элемент <select> с опциями из категорий WordPress. Теперь в Contact Form 7 можно вставить шорткод [cf7ru_dynamic_select] и получить выпадающий список с категориями.

Используем динамическое поле в Contact Form 7

В редакторе формы Contact Form 7 добавьте поле:

[html dynamic-category-select] [cf7ru_dynamic_select][/html]

Здесь тег [html] позволяет вставить произвольный HTML — наш выпадающий список с динамическими данными.

А для обработки выбранного значения в письме используйте тег [your-category], соответствующий атрибуту name в <select>.

Динамическое автозаполнение текстового поля

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

function cf7ru_autofill_username() {
    if (is_user_logged_in()) {
        $user = wp_get_current_user();
        return esc_html($user->display_name);
    }
    return '';
}
add_shortcode('cf7ru_username', 'cf7ru_autofill_username');

В Contact Form 7 вставьте такой шорткод в текстовое поле:

[text* your-name default:"[cf7ru_username]"]

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

Обработка динамических данных при отправке формы

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

function cf7ru_save_category_meta($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();
        if (!empty($data['your-category'])) {
            // Здесь можно сохранить данные, например, в пользовательские мета или в таблицу
            // update_post_meta($submission_post_id, '_selected_category', sanitize_text_field($data['your-category']));
        }
    }
}
add_action('wpcf7_before_send_mail', 'cf7ru_save_category_meta');

Дополнительные плагины для расширения Contact Form 7

Для работы с динамическими полями и интеграции Contact Form 7 с базой данных удобно использовать следующие плагины:

  • Contact Form 7 – Dynamic Text Extension — позволяет создавать динамические поля с помощью шорткодов;
  • Contact Form 7 to Database Extension — сохраняет отправленные данные в базу для дальнейшего анализа;
  • Clearfy Pro — оптимизирует работу WordPress и Contact Form 7, помогает убрать лишние скрипты и улучшить производительность.

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

Подгружая данные из базы и выводя их в форму, обязательно обрабатывайте и экранируйте данные для предотвращения XSS и SQL-инъекций. Используйте функции WordPress, такие как esc_html(), esc_attr(), и prepare() для запросов к базе.

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

Вывод

Динамические поля в Contact Form 7 позволяют создавать гибкие и адаптивные формы. С помощью собственных шорткодов и хуков можно подгружать данные из базы WordPress, автоматически заполнять поля и обрабатывать полученную информацию. Такой подход расширяет возможности плагина и помогает создавать удобные формы под любые задачи.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Contact Form 7: отправка формы через REST API с авторизацией в WordPress
14.05.2026
Contact Form 7: как избежать потери данных при перезагрузке страницы
23.04.2026
Contact Form 7: как добавить поле для загрузки файлов в форму WordPress
26.11.2025
Contact Form 7: как добавить проверку OTP (одноразовый пароль) для подтверждения формы
23.02.2026
Contact Form 7: как автоматически удалять отправленные данные и логи формы
02.06.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙