wpforms.ru wordpress WPForms.ru

Как создать собственный шорткод для формы в WPForms

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

Почему нужен собственный шорткод для формы WPForms?

Стандартный шорткод WPForms выглядит так: [wpforms id="123"], где 123 – ID формы. Но что если нужно динамически менять ID формы, добавлять скрытые поля, менять стили или выполнять дополнительные проверки перед выводом формы? В таких случаях стандартный шорткод ограничен.

Создание собственного шорткода позволяет:

  • Динамически выводить разные формы на одной странице
  • Добавлять скрытые поля с данными из URL или сессии
  • Интегрировать формы с другими плагинами или API
  • Добавлять свои стили и скрипты только при необходимости

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

Создание простого пользовательского шорткода — пример кода

Для начала создадим простой шорткод, который принимает ID формы через атрибут и выводит форму WPForms.

Добавьте следующий код в functions.php вашей темы или в собственный плагин:

function wpformsru_custom_form_shortcode($atts) {
    $atts = shortcode_atts(array(
        'id' => '',
    ), $atts, 'wpformsru_form');
    
    if(empty($atts['id'])) {
        return '<p>ID формы не указан.</p>';
    }
    
    // Выводим форму через стандартную функцию WPForms
    return wpforms_display($atts['id']);
}
add_shortcode('wpformsru_form', 'wpformsru_custom_form_shortcode');

Теперь в редакторе WordPress можно использовать шорткод [wpformsru_form id="123"] для вывода формы с ID 123.

Пояснения к коду

Функция wpformsru_custom_form_shortcode принимает атрибуты, задаёт значение по умолчанию, проверяет наличие ID и выводит форму с помощью функции wpforms_display — встроенной функции WPForms, отвечающей за генерацию формы по ID.

Добавление скрытых полей в форму через шорткод

Частая задача — передать в форму какие-либо параметры, например, UTM-метки или ID пользователя, чтобы потом получить эти данные вместе с заявкой.

WPForms позволяет программно добавлять значения в поля с помощью фильтра wpforms_process_before_form_data. Мы можем использовать этот механизм в связке с нашим шорткодом.

Пример добавления скрытого поля с текущим ID пользователя

function wpformsru_add_hidden_user_id($fields, $entry, $form_data) {
    if(!is_user_logged_in()) {
        return $fields; // если пользователь не залогинен, не добавляем
    }

    $user_id = get_current_user_id();
    foreach($fields as &$field) {
        if($field['type'] === 'hidden' && $field['name'] === 'user_id') {
            $field['value'] = $user_id;
        }
    }
    return $fields;
}
add_filter('wpforms_process_before_form_data', 'wpformsru_add_hidden_user_id', 10, 3);

Чтобы это сработало, в настройках формы WPForms должен быть создан скрытый поле с именем user_id. Тогда при отправке формы в это поле автоматически попадёт ID текущего пользователя.

Динамическая выборка ID формы и передача параметров через URL

Если нужно выводить разные формы на одной странице в зависимости от параметров, можно в шорткоде считывать параметры из URL.

function wpformsru_dynamic_form_shortcode($atts) {
    // Получаем ID формы из GET параметра form_id
    $form_id = isset($_GET['form_id']) ? intval($_GET['form_id']) : 0;
    if($form_id <= 0) {
        return '<p>Форма не найдена.</p>';
    }
    return wpforms_display($form_id);
}
add_shortcode('wpformsru_dynamic_form', 'wpformsru_dynamic_form_shortcode');

Используйте шорткод [wpformsru_dynamic_form], а в URL передавайте параметр, например: https://example.com/page?form_id=123. Форма с нужным ID отобразится автоматически.

Как подключать стили и скрипты только при выводе формы через шорткод

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

Можно реализовать это через глобальную переменную и хук wp_enqueue_scripts:

function wpformsru_custom_form_shortcode($atts) {
    global $wpformsru_load_assets;
    $wpformsru_load_assets = true;

    $atts = shortcode_atts(array(
        'id' => '',
    ), $atts, 'wpformsru_form');

    if(empty($atts['id'])) {
        return '<p>ID формы не указан.</p>';
    }
    return wpforms_display($atts['id']);
}
add_shortcode('wpformsru_form', 'wpformsru_custom_form_shortcode');

function wpformsru_enqueue_assets() {
    global $wpformsru_load_assets;
    if(!empty($wpformsru_load_assets)) {
        wp_enqueue_style('wpforms-custom-style', get_stylesheet_directory_uri() . '/css/wpforms-custom.css');
        wp_enqueue_script('wpforms-custom-script', get_stylesheet_directory_uri() . '/js/wpforms-custom.js', array('jquery'), null, true);
    }
}
add_action('wp_enqueue_scripts', 'wpformsru_enqueue_assets');

В данном примере CSS и JS будут подключены только если на странице использован шорткод [wpformsru_form].

Заключение

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше