Функция 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 для создания историй.