Как создать шорткод для вывода пользовательских данных в WordPress

Шорткоды в WordPress — это удобный способ добавлять динамический контент в записи, страницы и виджеты без необходимости писать HTML или PHP-код вручную. В этой статье мы разберём, как создать собственный шорткод, который будет выводить данные пользователя, например, имя, email или другую информацию из профиля, а также как его расширить и кастомизировать под свои задачи.

Что такое шорткод в WordPress и зачем он нужен

Шорткод — это специальный тег в квадратных скобках, который WordPress заменяет на заданный контент при выводе страницы. Например, [gallery] вставляет галерею изображений. С помощью шорткодов можно легко добавлять сложный функционал без необходимости писать длинный код в каждом месте.

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

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

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

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

function wptemplates_user_greeting_shortcode() {
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        return 'Привет, ' . esc_html($current_user->display_name) . '!';
    } else {
        return 'Привет, гость! Пожалуйста, войдите на сайт.';
    }
}
add_shortcode('wptemplates_greeting', 'wptemplates_user_greeting_shortcode');

Объяснение кода:

  • Функция wptemplates_user_greeting_shortcode проверяет, вошёл ли пользователь в систему.
  • Если да — получает объект текущего пользователя и выводит его отображаемое имя (display_name), экранируя его для безопасности.
  • Если нет — выводит приветствие для гостя.
  • Зарегистрирован шорткод с именем wptemplates_greeting.

Теперь, если вставить в любой пост или страницу [wptemplates_greeting], пользователь увидит персональное приветствие.

Расширение шорткода: вывод произвольных полей пользователя

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

Допустим, у вас есть мета-поле пользователя с ключом phone. Добавим его вывод в шорткод с параметрами:

function wptemplates_user_info_shortcode($atts) {
    if ( !is_user_logged_in() ) {
        return 'Пожалуйста, авторизуйтесь, чтобы увидеть информацию.';
    }

    $atts = shortcode_atts( array(
        'field' => 'display_name', // поле по умолчанию
    ), $atts, 'wptemplates_user_info' );

    $current_user = wp_get_current_user();

    switch ($atts['field']) {
        case 'email':
            return esc_html($current_user->user_email);
        case 'phone':
            $phone = get_user_meta($current_user->ID, 'phone', true);
            return esc_html($phone ? $phone : 'Телефон не задан');
        case 'display_name':
        default:
            return esc_html($current_user->display_name);
    }
}
add_shortcode('wptemplates_user_info', 'wptemplates_user_info_shortcode');

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

  • [wptemplates_user_info field="email"] — выведет email пользователя.
  • [wptemplates_user_info field="phone"] — выведет телефон из мета-поля.

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

Чтобы расширить функционал, можно динамически выводить любые мета-поля пользователя, передавая имя ключа в параметре. Важно проверять и очищать входные данные, чтобы избежать XSS-уязвимостей.

Пример улучшенной функции:

function wptemplates_user_meta_shortcode($atts) {
    if ( !is_user_logged_in() ) {
        return 'Авторизация необходима для просмотра информации.';
    }

    $atts = shortcode_atts( array(
        'key' => 'display_name'
    ), $atts, 'wptemplates_user_meta' );

    $current_user = wp_get_current_user();

    if ($atts['key'] === 'display_name') {
        return esc_html($current_user->display_name);
    }

    $value = get_user_meta($current_user->ID, sanitize_key($atts['key']), true);

    if (empty($value)) {
        return 'Данные не найдены';
    }

    return esc_html($value);
}
add_shortcode('wptemplates_user_meta', 'wptemplates_user_meta_shortcode');

Теперь вы можете выводить любые мета-данные пользователя через шорткод, например:

  • [wptemplates_user_meta key="address"]
  • [wptemplates_user_meta key="department"]

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

Если вы хотите упростить работу с пользовательскими профилями и мета-данными, рекомендуем обратить внимание на следующие плагины:

  • Advanced Custom Fields (ACF) — позволяет создавать и редактировать произвольные поля для пользователей через удобный интерфейс. Можно использовать вместе с шорткодами.
  • User Meta — плагин для управления мета-данными пользователей с поддержкой шорткодов.
  • Profile Builder — расширенный редактор профиля с возможностью создания форм регистрации и вывода данных через шорткоды.

Все эти инструменты помогут сделать сайт более интерактивным и удобным для пользователей.

Практические советы по работе с шорткодами и пользовательскими данными

1. Всегда проверяйте, что пользователь авторизован, прежде чем выводить личные данные, чтобы не раскрывать их посторонним.

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

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

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

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

Как создать адаптивные шаблоны WordPress с использованием атрибута srcset
30.03.2026
Как добавить поле в форму регистрации WordPress
10.11.2025
Создаем свой шаблон для WordPress с нуля
04.11.2025
WooCommerce: как использовать хуки для кастомизации корзины
04.06.2026
Удаление и блокировка плагинов WordPress, если стандартные методы не работают
16.01.2026