Как использовать функцию do_shortcode в WordPress для динамического вывода контента

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

Что такое функция do_shortcode и зачем она нужна

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

Например, если плагин создал шорткод [myshortcode], то вызов echo do_shortcode('[myshortcode]'); выведет его результат.

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

Примеры использования функции do_shortcode с популярными плагинами

Вставка формы Contact Form 7 через PHP

Contact Form 7 использует шорткод [contact-form-7 id="1234"]. Чтобы вывести форму в шаблоне, используйте:

echo do_shortcode('[contact-form-7 id="1234" title="Форма обратной связи"]');

Это удобно, если вы хотите разместить форму в нестандартном месте, например, в футере или сайдбаре.

Вывод галереи с помощью плагина Envira Gallery

Envira Gallery также работает через шорткоды. Например:

echo do_shortcode('[envira-gallery id="5678"]');

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

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

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

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

function wpfaq_custom_greeting_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'name' => 'Гость',
        ), $atts, 'wpfaq_greeting');
    return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WPFAQ.';
}
add_shortcode('wpfaq_greeting', 'wpfaq_custom_greeting_shortcode');

Теперь этот шорткод можно использовать так: [wpfaq_greeting name="Алексей"]. Чтобы вывести его из PHP-кода, делаем:

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

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

Иногда шорткод принимает содержимое внутри себя. Например, шорткод [wpfaq_box]Контент[/wpfaq_box]. При выводе через PHP нужно передать и содержимое:

echo do_shortcode('[wpfaq_box]Текст внутри блока[/wpfaq_box]');

Важно правильно экранировать кавычки и спецсимволы, чтобы избежать ошибок.

Особенности и подводные камни использования do_shortcode

Несмотря на простоту, есть моменты, на которые стоит обратить внимание:

  • Производительность. Частое вызовы do_shortcode могут замедлять загрузку, особенно если шорткод выполняет ресурсоёмкие операции.
  • Безопасность. Никогда не вставляйте в do_shortcode пользовательский ввод без фильтрации — это может привести к XSS-уязвимостям.
  • Контекст вызова. Некоторые шорткоды работают только в контексте поста или страницы, где есть определённые глобальные переменные WordPress.

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

По умолчанию виджеты текста в WordPress не обрабатывают шорткоды. Чтобы исправить это, можно добавить в functions.php следующий код:

function wpfaq_enable_shortcodes_in_widgets() {
    add_filter('widget_text', 'do_shortcode');
}
add_action('widgets_init', 'wpfaq_enable_shortcodes_in_widgets');

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

Вывод

Функция do_shortcode — мощный инструмент для разработчиков WordPress, позволяющий внедрять функционал шорткодов в любой PHP-код темы или плагина. Используйте её с умом, учитывая производительность и безопасность.

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

Оценка и отзывы в WordPress: настройка и примеры реализации
01.02.2026
WooCommerce: решение проблемы с отображением товаров после обновления кеша
11.05.2026
Как отключить Emoji в WordPress для ускорения сайта
27.01.2026
Как установить ограничения на регистрацию в WordPress по домену email
24.01.2026
Как реализовать отложенный запуск задач в WordPress с помощью WP-Cron
21.01.2026