Как добавить переменные из пользовательского профиля в Gutenberg на GeneratePress

В современных проектах на WordPress часто возникает задача динамически выводить персонализированную информацию пользователя прямо в контенте страниц или записей. Если вы используете тему GeneratePress и редактор Gutenberg, то стандартных инструментов для вставки данных из пользовательского профиля в блоки по умолчанию нет. В этой статье мы подробно разберём, как добавить переменные из пользовательского профиля в Gutenberg-блоки на сайте с GeneratePress.

Почему важно использовать пользовательские данные в контенте

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

В Gutenberg нет стандартного блока с динамическими переменными, но с помощью PHP и небольших приёмов можно реализовать удобное решение.

Добавление шорткода для вывода данных пользователя в GeneratePress

Первым шагом создадим шорткод, который будет возвращать нужные данные пользователя. Это позволит использовать шорткод в любом блоке Gutenberg, например в абзацах или в блоке «Код».

Добавьте следующий код в файл functions.php вашей дочерней темы GeneratePress или в плагин для пользовательских функций:

function generatepressru_user_profile_shortcode($atts) {
    if (!is_user_logged_in()) {
        return 'Пользователь не авторизован';
    }
    $user = wp_get_current_user();
    $atts = shortcode_atts(array(
        'field' => 'display_name', // имя поля по умолчанию
    ), $atts, 'gp_user');

    switch ($atts['field']) {
        case 'email':
            return esc_html($user->user_email);
        case 'registered':
            return date_i18n(get_option('date_format'), strtotime($user->user_registered));
        case 'role':
            return esc_html(implode(', ', $user->roles));
        case 'display_name':
        default:
            return esc_html($user->display_name);
    }
}
add_shortcode('gp_user', 'generatepressru_user_profile_shortcode');

Теперь в любом блоке Gutenberg можно вставить шорткод, например:

[gp_user field="display_name"]

Он выведет имя текущего пользователя. Аналогично можно использовать поля email, registered (дата регистрации) и role.

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

Если вы хотите более удобный и современный способ — создадим собственный блок Gutenberg с выбором переменных пользователя в настройках блока.

Для этого понадобится базовое понимание JavaScript и React, а также установка @wordpress/scripts для сборки блока. Ниже пример упрощённого блока.

Структура блока и регистрация на PHP

function generatepressru_register_user_variable_block() {
    register_block_type('generatepressru/user-variable', array(
        'editor_script' => 'generatepressru-user-variable-script',
        'render_callback' => 'generatepressru_render_user_variable_block',
        'attributes' => array(
            'field' => array('type' => 'string', 'default' => 'display_name'),
        ),
    ));
}
add_action('init', 'generatepressru_register_user_variable_block');

function generatepressru_render_user_variable_block($attributes) {
    if (!is_user_logged_in()) {
        return 'Пользователь не авторизован';
    }
    $user = wp_get_current_user();
    switch ($attributes['field']) {
        case 'email':
            return esc_html($user->user_email);
        case 'registered':
            return date_i18n(get_option('date_format'), strtotime($user->user_registered));
        case 'role':
            return esc_html(implode(', ', $user->roles));
        case 'display_name':
        default:
            return esc_html($user->display_name);
    }
}

JavaScript код блока (React)

В файле src/index.js вашего блока добавьте такой код:

import { registerBlockType } from '@wordpress/blocks';
import { SelectControl } from '@wordpress/components';
import { useBlockProps } from '@wordpress/block-editor';

registerBlockType('generatepressru/user-variable', {
    title: 'Переменная пользователя',
    icon: 'admin-users',
    category: 'widgets',
    attributes: {
        field: { type: 'string', default: 'display_name' },
    },
    edit({ attributes, setAttributes }) {
        const blockProps = useBlockProps();
        return (
            <div {...blockProps}>
                <SelectControl
                    label="Выберите переменную"
                    value={attributes.field}
                    options={[
                        { label: 'Имя пользователя', value: 'display_name' },
                        { label: 'Email', value: 'email' },
                        { label: 'Дата регистрации', value: 'registered' },
                        { label: 'Роль', value: 'role' },
                    ]}
                    onChange={(field) => setAttributes({ field })}
                />
                <p>В контенте отобразится выбранная переменная текущего пользователя.</p>
            </div>
        );
    },
    save() {
        return null; // рендерим на сервере
    },
});

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

Если нужен более сложный профиль с дополнительными полями, можно использовать плагины, например Clearfy Pro, который позволяет управлять полями пользователя и оптимизировать работу WordPress.

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

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

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

Также кешируйте данные, если это возможно, чтобы снизить нагрузку на сервер при большом количестве пользователей.

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

Выводы и рекомендации

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

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

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

Как создать динамические меню в GeneratePress для удобства управления сайтом
22.11.2025
Как создать внутреннюю кэширу в GeneratePress для ускорения загрузки сайта
30.03.2026
Как создать динамические отзывы с подгрузкой в GeneratePress
06.01.2026
Как удалить ненужные скрипты и стили в GeneratePress для оптимизации загрузки сайта
24.03.2026
Как добавить уникальные классы для блоков Gutenberg в GeneratePress
19.01.2026