В современных проектах на WordPress часто возникает потребность в создании динамических пользовательских форм, которые подстраиваются под действия и данные пользователя. Это особенно актуально для сайтов с регистрацией, опросами, обратной связью или кастомными действиями. В этой статье мы подробно разберём, как автоматизировать отображение таких форм в нужных местах сайта с помощью кастомного кода и плагинов.
Почему важна автоматизация отображения форм в WordPress
Стандартные формы, создаваемые вручную в каждом месте сайта, требуют много времени на поддержку и обновление. Автоматизация позволяет:
- Подключать формы динамически в зависимости от страницы, пользователя или контекста.
- Избежать дублирования кода и ошибок.
- Упростить управление формами для администраторов и разработчиков.
Такой подход особенно полезен, если на сайте несколько типов форм, которые должны отображаться на разных страницах или в зависимости от состояния пользователя.
Основные способы автоматического отображения форм
Использование шорткодов и условных тегов
Один из простейших способов — зарегистрировать шорткод, который выводит форму, и вставлять его в шаблоны с условиями. Пример функции для wp-kit.ru:
function wpkit_render_dynamic_form() {
if ( is_user_logged_in() ) {
return '<form><input type="text" name="feedback" placeholder="Ваш отзыв" /><button type="submit">Отправить</button></form>';
} else {
return '<p>Пожалуйста, авторизуйтесь, чтобы оставить отзыв.</p>';
}
}
add_shortcode('wpkit_dynamic_form', 'wpkit_render_dynamic_form');Теперь можно вставлять [wpkit_dynamic_form] в контент или шаблон, а форма будет показываться только авторизованным пользователям.
Автоматическая вставка формы в шаблоны через хуки
Чтобы не вставлять шорткод в каждый пост вручную, можно использовать хуки WordPress. Например, добавим форму сразу после контента записи:
function wpkit_insert_form_after_content($content) {
if ( is_single() && is_user_logged_in() ) {
$form = do_shortcode('[wpkit_dynamic_form]');
return $content . $form;
}
return $content;
}
add_filter('the_content', 'wpkit_insert_form_after_content');Так форма автоматически появится на всех одиночных страницах записей для авторизованных пользователей.
Использование плагинов для динамических форм
Если хочется больше удобства и функционала, можно использовать плагины, которые поддерживают динамическое отображение форм с условиями.
Плагин Gravity Forms
Gravity Forms — мощный конструктор форм, который позволяет создавать сложные формы с логикой отображения. В частности, можно задать правила, по которым форма показывается только на нужных страницах или для определённых пользователей.
Для автоматического отображения формы в шаблоне можно использовать код:
if ( function_exists('gravity_form') ) {
gravity_form( 1, false, false, false, '', true, 12 );
}Где 1 — ID формы. Параметры позволяют гибко управлять отображением.
Плагин WPForms
WPForms — ещё один популярный плагин с удобным интерфейсом и возможностью условного показа форм. Для динамического вывода можно использовать шорткод, как и в предыдущем примере, или добавить форму программно:
echo do_shortcode('[wpforms id="123" title="false" description="false"]');WPForms позволяет создавать формы с различным уровнем сложности, включая многошаговые и с динамическими полями.
Пример: динамическая форма обратной связи с сохранением в базу
Рассмотрим пример, как создать простую форму обратной связи, которая автоматически отображается на странице контактов и сохраняет данные в базу WordPress.
1. Создание шорткода формы
function wpkit_feedback_form_shortcode() {
if ( ! is_page('contacts') ) {
return '';
}
if ( isset($_POST['wpkit_feedback_submit']) ) {
$name = sanitize_text_field($_POST['wpkit_feedback_name']);
$message = sanitize_textarea_field($_POST['wpkit_feedback_message']);
global $wpdb;
$table = $wpdb->prefix . 'wpkit_feedback';
$wpdb->insert($table, [
'name' => $name,
'message' => $message,
'date' => current_time('mysql')
]);
return '<p>Спасибо за ваш отзыв!</p>';
}
ob_start(); ?>
<form method="post" action="">
<label>Имя:</label>
<input type="text" name="wpkit_feedback_name" required /><br>
<label>Сообщение:</label>
<textarea name="wpkit_feedback_message" required></textarea><br>
<button type="submit" name="wpkit_feedback_submit">Отправить</button>
</form>
<?php
return ob_get_clean();
}
add_shortcode('wpkit_feedback_form', 'wpkit_feedback_form_shortcode');2. Создание таблицы при активации плагина
function wpkit_create_feedback_table() {
global $wpdb;
$table = $wpdb->prefix . 'wpkit_feedback';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name tinytext NOT NULL,
message text NOT NULL,
date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wpkit_create_feedback_table');3. Добавление формы на страницу
В редакторе страницы «Контакты» вставьте шорткод:
[wpkit_feedback_form]После этого форма будет автоматически отображаться на странице контактов, а данные пользователей сохраняться в базе WordPress.
Как контролировать показ форм с помощью пользовательских условий
Для более гибкого управления отображением форм можно использовать условные теги WordPress, а также проверять роли и метаданные пользователя.
Пример: показывать форму только для пользователей с ролью «subscriber»
function wpkit_conditional_form() {
if ( current_user_can('subscriber') ) {
return do_shortcode('[wpkit_dynamic_form]');
}
return '<p>Доступ только для подписчиков.</p>';
}Так можно легко адаптировать функционал под разные группы пользователей.
Использование плагина Clearfy Pro для оптимизации форм
Если на сайте много форм и динамического контента, плагин Clearfy Pro поможет оптимизировать загрузку, удаляя лишние скрипты и стили, которые не нужны на страницах без форм. Это улучшит скорость и стабильность сайта.
Подробнее о Clearfy Pro вы можете узнать на wpshop.ru.
Итоги
Автоматическое отображение динамических пользовательских форм в WordPress — мощный инструмент для повышения удобства и функционала сайта. Используя комбинацию шорткодов, хуков, условных тегов и плагинов, можно создать гибкие решения под любые задачи. В статье мы рассмотрели примеры кода, базовые техники и полезные плагины для эффективной работы с формами.