Как создать собственный шорткод в WordPress для удобного вывода контента

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

Что такое шорткод в WordPress и зачем его создавать

Шорткод — это короткая метка в квадратных скобках, например, [gallery], которая WordPress преобразует в HTML или PHP-код во время отображения страницы. Создавая собственный шорткод, вы получаете возможность:

  • Вставлять повторяющийся контент без копирования и вставки HTML.
  • Добавлять динамический функционал, например, формы, слайдеры, таблицы.
  • Упрощать процесс редактирования для контент-менеджеров.

Примером стандартного шорткода является [caption] для подписей под изображениями. Пользовательские шорткоды позволяют выходить за рамки стандартных возможностей.

Как зарегистрировать пользовательский шорткод в WordPress

Для регистрации своего шорткода используется функция add_shortcode(). Рассмотрим на примере создания шорткода [wpteam_hello], который выводит простое приветствие.

function wpteam_hello_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'name' => 'гость',
        ), $atts, 'wpteam_hello'
    );
    return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WP-Team.';
}
add_shortcode('wpteam_hello', 'wpteam_hello_shortcode');

Здесь мы создали функцию wpteam_hello_shortcode, которая принимает параметры через массив $atts. Функция возвращает строку с приветствием, подставляя имя из параметров, если оно передано. Если нет — по умолчанию используется «гость».

Чтобы использовать шорткод, вставьте в редактор запись:

[wpteam_hello name="Иван"]

В результате на странице выведется: Привет, Иван! Добро пожаловать на WP-Team.

Пояснения к функции shortcode_atts

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

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

Представим, что нам нужно вывести список последних записей блога с возможностью задать количество и категорию через атрибуты шорткода. Создадим шорткод [wpteam_recent_posts]:

function wpteam_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'count' => 5,
            'category' => '',
        ), $atts, 'wpteam_recent_posts'
    );

    $args = array(
        'posts_per_page' => intval($atts['count']),
        'post_status' => 'publish',
    );

    if (!empty($atts['category'])) {
        $args['category_name'] = sanitize_text_field($atts['category']);
    }

    $query = new WP_Query($args);
    if (!$query->have_posts()) {
        return '<p>Записи не найдены.</p>';
    }

    $output = '<ul class="wpteam-recent-posts">';
    while ($query->have_posts()) {
        $query->the_post();
        $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    $output .= '</ul>';
    wp_reset_postdata();

    return $output;
}
add_shortcode('wpteam_recent_posts', 'wpteam_recent_posts_shortcode');

Этот шорткод принимает два параметра:

  • count — количество постов для вывода (по умолчанию 5);
  • category — слаг категории, фильтрующей записи (если не задан — выводятся записи из всех категорий).

Пример использования:

[wpteam_recent_posts count="3" category="wordpress"]
<

Так вы получите список из 3 последних записей категории «wordpress».

Безопасность и оптимизация пользовательских шорткодов

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

  • Используйте функции esc_html(), esc_attr(), sanitize_text_field() для очистки данных, получаемых из параметров.
  • Не выполняйте тяжелые запросы без необходимости — кешируйте результаты при больших объемах данных.
  • Обязательно вызывайте wp_reset_postdata() после собственных запросов WP_Query, чтобы не нарушить глобальный цикл WordPress.
  • Для больших шорткодов разбивайте логику на вспомогательные функции для удобства поддержки.

Пример безопасности с экранированием

function wpteam_safe_shortcode($atts) {
    $text = isset($atts['text']) ? sanitize_text_field($atts['text']) : 'Без текста';
    return '<div class="wpteam-safe">' . esc_html($text) . '</div>';
}
add_shortcode('wpteam_safe', 'wpteam_safe_shortcode');

Так вы защитите сайт от XSS-атак и некорректного вывода.

Как подключить шорткод в тему или плагин

Обычно код шорткодов помещают в файл functions.php вашей темы или в отдельный плагин. Если хотите, чтобы шорткод работал даже при смене темы, создайте небольшой плагин:

/*
Plugin Name: WP-Team Shortcodes
Description: Набор пользовательских шорткодов для сайта WP-Team.ru
Version: 1.0
Author: WP-Team
*/

// сюда вставьте функции ваших шорткодов

Активируйте плагин в админке — шорткоды станут доступны в любом месте сайта.

Подведение итогов: зачем и как создавать свои шорткоды

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

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

Как настроить отложенный запуск задач в WordPress без использования WP-Cron
08.02.2026
Как использовать хук pre_get_posts для сложной фильтрации в WordPress
22.01.2026
Как создать и использовать собственные типы записей (Custom Post Types) в WordPress
05.02.2026
Как удалить кэш transient в WordPress для решения проблем с устаревшими данными
11.02.2026
Автоматизация создания копий безопасности WordPress: практические решения от WP-Team
29.11.2025