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

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

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

Шорткод — это специальная метка в квадратных скобках, например [example_shortcode], которая при выводе на сайте заменяется на определённый функционал или контент. Это своего рода макрос, который упрощает вставку сложных элементов.

Основные преимущества шорткодов:

  • Упрощение вставки контента без знания кода.
  • Возможность повторного использования одного и того же кода в разных местах.
  • Легкое управление функциональностью через WordPress редактор.

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

Как создать собственный шорткод: базовый пример

Создание собственного шорткода в WordPress сводится к регистрации функции, которая будет обрабатывать вывод, и регистрации этого шорткода с помощью функции add_shortcode.

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

function wpmax_greeting_shortcode($atts) {
    $atts = shortcode_atts(array(
        'name' => 'Гость'
    ), $atts, 'wpmax_greeting');

    return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на wpmax.ru.';
}
add_shortcode('wpmax_greeting', 'wpmax_greeting_shortcode');

Здесь мы создали функцию wpmax_greeting_shortcode, которая принимает атрибуты, задаёт значение по умолчанию и выводит приветственное сообщение. Регистрация шорткода происходит через add_shortcode('wpmax_greeting', 'wpmax_greeting_shortcode').

Теперь в любом месте поста или страницы можно вставить [wpmax_greeting name="Алексей"] — и появится персональное приветствие.

Передача атрибутов и их обработка в шорткодах

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

Пример с несколькими параметрами:

function wpmax_alert_shortcode($atts, $content = null) {
    $atts = shortcode_atts(array(
        'type' => 'info', // info, warning, error
    ), $atts, 'wpmax_alert');

    $class = 'wpmax-alert-' . esc_attr($atts['type']);

    if ($content === null) {
        return '';
    }

    return '<div class="' . $class . '">' . do_shortcode($content) . '</div>';
}
add_shortcode('wpmax_alert', 'wpmax_alert_shortcode');

Использовать такой шорткод можно так:

[wpmax_alert type="warning"]Внимание! Это предупреждение.[/wpmax_alert]

В результате на странице отобразится блок с классом wpmax-alert-warning, который можно стилизовать через CSS.

Обработка вложенного контента в шорткодах

Шорткоды могут обрабатывать не только атрибуты, но и содержимое между открывающим и закрывающим тегами. В примере выше мы передали предупреждающий текст как содержимое.

Важно использовать функцию do_shortcode() внутри обработчика, чтобы поддерживать вложенные шорткоды.

Примеры полезных шорткодов для WordPress

1. Шорткод для вставки кнопки с кастомным URL

function wpmax_button_shortcode($atts) {
    $atts = shortcode_atts(array(
        'url' => '#',
        'text' => 'Нажми меня',
        'class' => 'wpmax-btn'
    ), $atts, 'wpmax_button');

    return '<a href="' . esc_url($atts['url']) . '" class="' . esc_attr($atts['class']) . '">' . esc_html($atts['text']) . '</a>';
}
add_shortcode('wpmax_button', 'wpmax_button_shortcode');

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

[wpmax_button url="https://wpmax.ru" text="Посетить WPMax" class="custom-button"]

2. Шорткод для вывода текущей даты с форматированием

function wpmax_current_date_shortcode($atts) {
    $atts = shortcode_atts(array(
        'format' => 'd.m.Y'
    ), $atts, 'wpmax_date');

    return date_i18n($atts['format']);
}
add_shortcode('wpmax_date', 'wpmax_current_date_shortcode');

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

[wpmax_date format="j F Y"] — выведет дату в формате, например, «2 июня 2024».

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

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

Кроме того, не рекомендуется выполнять тяжелые операции в шорткодах, так как они вызываются при генерации контента и могут замедлить загрузку страницы.

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

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

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

echo do_shortcode('[wpmax_greeting name="Алексей"]');

Это позволит вставить функционал шорткода в любой PHP-шаблон.

Резюме: лучшие практики создания шорткодов на wpmax.ru

При создании собственных шорткодов придерживайтесь следующих рекомендаций:

  • Используйте уникальные префиксы, например, wpmax_, для имён функций и шорткодов, чтобы избежать конфликтов.
  • Обрабатывайте и экранируйте все входящие данные.
  • Поддерживайте вложенный контент через параметр $content и функцию do_shortcode().
  • Минимизируйте нагрузку на сервер, избегая тяжелых вычислений.
  • Добавляйте стили и скрипты аккуратно, используя хуки WordPress.

Создание собственных шорткодов — отличный способ расширить функциональность сайта без лишних плагинов и сложной настройки. На wpmax.ru вы всегда найдёте практические советы и примеры кода для эффективной работы с WordPress.

Автоматические отзывы на WordPress: создание и настройка
09.04.2026
WooCommerce: как избежать конфликтов между кастомными плагинами
23.06.2026
Как удалить неиспользуемые метаданные в WordPress: практическое руководство
31.03.2026
WooCommerce: как отключить автоматическое обновление статуса заказов
30.04.2026
Как изменить функции WooCommerce без изменения основных файлов WordPress
18.11.2025