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

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

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

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

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

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

Для начала нужно создать функцию, которая будет возвращать HTML-код для вставки, и зарегистрировать ее как обработчик шорткода. Пример базового шорткода:

function wpacademy_simple_shortcode() {
    return '<div style="padding:10px; background:#e3f2fd; border:1px solid #90caf9;">Это простой шорткод от WP Academy</div>';
}
add_shortcode('wpacademy_simple', 'wpacademy_simple_shortcode');

Теперь, если в редакторе вставить [wpacademy_simple], на сайте выведется стилизованный блок с текстом. Обратите внимание, что функция должна возвращать строку, а не выводить напрямую.

Добавление параметров к шорткоду: гибкость и настройка

Очень часто нужно, чтобы шорткод был настраиваемым. Для этого функция принимает параметр $atts — массив атрибутов из шорткода. Используем функцию shortcode_atts() для задания значений по умолчанию и удобного доступа к ним.

Пример шорткода с параметрами:

function wpacademy_colored_box_shortcode($atts, $content = null) {
    $atts = shortcode_atts(
        array(
            'color' => '#c8e6c9',
            'title' => 'Заголовок',
        ), $atts, 'wpacademy_box');

    $output = '<div style="border: 2px solid ' . esc_attr($atts['color']) . '; padding: 15px; background: ' . esc_attr($atts['color']) . ';">';
    $output .= '<strong>' . esc_html($atts['title']) . '</strong><br>';
    $output .= do_shortcode($content);
    $output .= '</div>';
    return $output;
}
add_shortcode('wpacademy_box', 'wpacademy_colored_box_shortcode');

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

[wpacademy_box color="#ffccbc" title="Важное сообщение"]Текст внутри цветного блока[/wpacademy_box]

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

Вложенные шорткоды и их обработка

Иногда нужно использовать один шорткод внутри другого. Для этого внутри функции обязательно вызывайте do_shortcode() для контента, чтобы WordPress обработал вложенные шорткоды.

В предыдущем примере это уже реализовано: do_shortcode($content) внутри возвращаемой строки позволяет использовать внутри [wpacademy_box] другие шорткоды, например, [gallery] или любые кастомные.

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

Практические примеры шорткодов для сайта

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

  • Шорткод кнопки с кастомным URL и стилем
function wpacademy_button_shortcode($atts) {
    $atts = shortcode_atts(array(
        'url' => '#',
        'text' => 'Нажми меня',
        'color' => '#1976d2'
    ), $atts, 'wpacademy_button');

    return '<a href="' . esc_url($atts['url']) . '" style="display:inline-block; padding:10px 20px; background:' . esc_attr($atts['color']) . '; color:#fff; text-decoration:none; border-radius:5px;">' . esc_html($atts['text']) . '</a>';
}
add_shortcode('wpacademy_button', 'wpacademy_button_shortcode');

Использование:

[wpacademy_button url="https://wpacademy.ru" text="Перейти на WP Academy" color="#388e3c"]
  • Шорткод отображения текущей даты в нужном формате
function wpacademy_current_date_shortcode($atts) {
    $atts = shortcode_atts(array(
        'format' => 'd.m.Y'
    ), $atts, 'wpacademy_date');

    return date_i18n($atts['format']);
}
add_shortcode('wpacademy_date', 'wpacademy_current_date_shortcode');

Использование:

[wpacademy_date format="j F Y"]

Выведет, например, "5 июня 2024".

Рекомендации по безопасности и производительности

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

Если шорткод вызывает сложные запросы к базе или внешний API, рассмотрите кэширование результатов с помощью Transients API или других методов.

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

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

  • Shortcodes Ultimate — набор готовых шорткодов с визуальным редактором.
  • Custom Content Shortcode — позволяет создавать свои шорткоды через админку без кода.
  • Insert PHP — для вставки PHP-кода в записи через шорткоды.

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

Как автоматически отключить комментарии на старых записях WooCommerce
01.06.2026
Удаление и оптимизация базы данных WordPress без плагинов: пошаговое руководство
18.02.2026
Как сделать автоматический импорт данных в WordPress из CSV с помощью WPAcademy
11.01.2026
Как удалить пустые категории в WordPress с помощью кода
21.03.2026
Как удалить старые варианты товаров в WooCommerce без плагинов
19.05.2026