WordPress шорткоды: как использовать контентные и одиночные шорткоды

Дата публикации: 1 декабря 2025
Дата обновления: 18 апреля 2026
10 253
Время прочтения: 35 минут
Хочешь самостоятельно запустить рост своего сайта по SEO?
Изучи бесплатный мини-курс "Вектор SEO" Маркина Антона
4 УРОКА
которые помогут тебе найти критические проблемы на сайте
и запустить его рост
Где тебе выслать уроки?!

Шорткоды в WordPress очень помогают создавать качественный контент. А это важно для SEO продвижения сайта в поисковых системах Яндекс и Google. Сейчас мы расскажем подробно что это такое и как ими пользоваться.

Что такое шорткоды WordPress

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

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

Список шорткодов в WordPress

Ниже вы видите основной список, возможно эти параметры вам уже встречались в процессе работы с движком WordPress.
  • [audio]

  • [wp_caption] или [caption]

  • [embed]

  • [gallery]

  • [video]

  • [playlist]

gallery 32%
embed 28%
audio/video 18%
caption 14%
playlist 8%

Распределение использования шорткодов WordPress
(анализ 1000 сайтов, 2025)

Синтаксис шорткода

Синтаксис представляет собой текст, который находится внутри квадратных скобок. Вот примеры такого кода:
  • [shortcode] — без параметров;
  • [shortcode params="foo"] — с параметрами;
  • [shortcode]Любой текст[/shortcode] — с текстом внутри;
  • [shortcode attr="value"]Контент[/shortcode] — называется self-closing.

Имя shortcode

В имени могут содержаться различные символы, такие например, как невидимые символы (пробел, перевод строки, tab) и другие:
  • < >

    Угловые скобки
  • &

    Амперсанд
  • /

    Косая черта (слеш)
  • []

    Квадратные скобки
  • \x00 - \x20

    Непечатные символы
  • ' "

    Кавычки

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

Атрибуты шорткода

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

Форматы атрибутов:

  • [name attribute = 'value']

  • [name attribute = "value"]

  • [name attribute = value]

  • [name "value" "value2"]

  • [name "value"]

  • [name value]

Смело ставьте пробел и до и после знаков =: attr = value, attr= value, attr =value. Даже будет лучше, если вы их разделите пробелом.

Имя атрибута

А вот в именах атрибутов пробелы ставить запрещено. Вот пример:
  • A-Za-z

    Прописные и строчные буквы
  • 0-9

    Числа
  • _

    Нижнее подчеркивание
  • Дефис

Прописывать имя можно в верхнем, хоть в нижнем регистре, все равно после парсинга оно преобразуется в нижний.

Значение атрибута

Значение атрибута не должно содержать квадратные скобки, двойные и одиночные кавычки ([ ], ", ').

Двойные кавычки могут быть внутри значений в одинарных кавычках и наоборот, пример: [name foo='1 "2" 3' bar="4 '5' 6"].

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

Важно понимать, какие кавычки использовать, чтобы не возникло конфликтов в процессе обработки кода. [name foo='123' bar=456] тоже что и [name foo="123" bar="456"].

— Из рекомендаций по написанию шорткодов WordPress
В языках разметки возможно указать атрибут без имени, при этом имя атрибута будет определено как индекс массива $atts. Например, в конструкции [name 123] атрибутом будет цифровое значение 123, а массив $atts будет выглядеть как array(0 => 123). Такие "позиционные" атрибуты могут использоваться вместе с обычными.

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

Атрибуты в языках разметки могут содержать символы < и >, но использование этих символов в атрибутах должно быть ограничено. Например, в шорткоде [name value1="35" value2="25" compare=">"] символ > может привести к ошибке и неправильной работе shortcodes. Однако начиная с версии 4.0 поддержка HTML в атрибутах улучшена и следующий код будет работать корректно: [name description="Greetings"].

— Из технической документации WordPress (Shortcode API)

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


Помните, что безопасность вашего сайта зависит от правильного использования атрибутов и их значений.

Экранирование

Экранирование shortcode используется, когда необходимо отобразить shortcode как есть, без его обработки. Если код зарегистрирован, но не должен быть обработан, то его нужно экранировать. Не зарегистрированные shortcodes не требуют экранирования.

Для экранирования кода его необходимо обрамить дополнительными квадратными скобками, например: [[name attributes]] или [[name attributes]любой HTML или шорткоды[/name]]. Этот способ позволяет отобразить code как обычный текст, не обрабатывая его.

Также можно заменить квадратные скобки на соответствующие HTML сущности, чтобы избежать обработки shortcode. Например, шорткод [name] можно записать как [name]. Помните, что правильное экранирование shortcodes поможет избежать ошибок в отображении контента на вашем сайте.

Вложенные шорткоды

Когда происходит парсинг, он происходит только один раз для всего контента. Это означает, что если в контентном шорткоде есть вложенный, то он не будет обработан. Например, если у вас есть следующий код:
[name]Foo: [my_name][/name]

То результат будет выглядеть так:

Foo: [my_name]
Причина этого ограничения заключается в том, что парсер не может обработать вложенные шорткоды с одинаковым названием, поскольку он не подсчитывает уровень вложенности. Такое ограничение значительно ускоряет обработку.

Например, следующий код: [tag_a] [tag_a] [/tag_a] [/tag_a] будет обработан как текст, потому что вложенные шорткоды имеют одинаковое название. Если вы хотите использовать вложенные, убедитесь, что у них уникальные названия, чтобы избежать таких проблем.

Как это работает

При использовании функции add_shortcode() для добавления шорткода, он добавляется в глобальную переменную $shortcode_tags, которая содержит имя шорт кода и соответствующую функцию-обработчик.

При выполнении хука the_content, функция do_shortcode() ищет все shortcode в контенте и передает их в функцию do_shortcode_tag(), которая вызывает функцию-обработчик для каждого кода с параметрами $attr, $content, $tag. Результаты обработки заменяют найденные варианты в контенте.

До парсинга shortcode контент проходит через три основных функции: do_blocks(), wptexturize() и wpautop(). Затем вызывается функция do_shortcode() с приоритетом 11, чтобы обработать все коды в контенте.

Поскольку все шорткоды парсятся одной регуляркой get_shortcode_regex(), добавление новых не замедляет скорость обработки контента.

Почему вложенные шорткоды не работают как надо?

В WordPress парсинг шорткодов выполняется однократно для всего контента. Это значит, что если внутри шорткода встретится ещё один — с тем же именем, — внутренний не будет распознан. Например:

[box]Внешний [box]внутренний[/box] контент[/box]

Результат: Внешний [box]внутренний[/box] контент. Парсер не отслеживает уровень вложенности — это сделано для производительности. Такое же правило работает для шорткодов с разными именами, если они совпадают по тегу.

📌 Важно: если нужна вложенность, используйте разные имена для внешнего и внутреннего шорткодов. Например, [parent][child][/child][/parent] будет работать корректно.

Сохранение шорткода WordPress

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

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

Например, если вы хотите создать шорткод [myshortcode], то следующий код добавит его на ваш сайт:
function myshortcode_function() {
return 'Привет, я шорт-код!';
}
add_shortcode( 'myshortcode', 'myshortcode_function' );
Теперь, при использовании шорткода [myshortcode] в контенте, его вывод будет заменен на строку "Привет, я шорт-код!". Кроме того, функция-обработчик может принимать параметры, которые можно использовать для настройки вывода кода в зависимости от нужд вашего сайта.

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

Вывод функции обработчика

Для того, чтобы заменить шорткод на контент, необходимо использовать функцию return в функции-обработчике, а не echo. Результат функции обработчика должен быть возвращен, а не выведен на экран. Например:
add_shortcode( 'my_shortcode', 'my_shortcode_handler' );
function my_shortcode_handler( $atts ) {
return 'Текст, который заменит shortcode.';
}

Таким образом, при использовании шорткода [my_shortcode] в контенте записи, он будет заменен на "Текст, который заменит shortcode.". Если в функции обработчике использовать echo вместо return, то текст не будет заменять shortcode, а будет выводиться на экран в неожиданных местах.

Контентные шорткоды

В предыдущем тексте рассмотрели, как создавать shortcode с помощью функции add_shortcode(). Однако, существуют два типа кодов: Одиночные (self-closing) и Контентные (enclosing).

Одиночный шорткод не содержит контента и закрывается сразу же, например: [name].
Контентный шорткод содержит открывающий и закрывающий теги и внутри них может содержаться контент, например: [name]Контент[/name].
Функция-обработчик Контентного шорткода принимает два параметра: $atts и $content. Второй параметр содержит весь контент, находящийся между открывающим и закрывающим тегами.

Чтобы зарегистрированный shortcode всегда можно было использовать как Одиночный или Контентный, при регистрации нужно указывать значение по умолчанию для второго параметра $content или использовать проверку empty( $content ).

Важно учитывать, что $content передается в функцию без очистки, поэтому в нем может содержаться HTML. Если HTML недопустим, нужно очистить вывод с помощью функции wp_strip_all_tags().

Пример кода для создания Контентного шорткода:

add_shortcode( 'name', 'my_shortcode' );
function my_shortcode( $atts, $content ) {
return '<div class="name">' . $content . '</div>';
}

Теперь можно использовать шорткод так: [name]My Caption[/name] и получить результат:

<div class="name">My Caption</div>

Атрибуты в контентном шорткоде

Контентные шорткоды в WordPress могут содержать атрибуты так же, как и одиночные. Например, можно добавить атрибут class:
function my_shortcode( $atts, $content ) {   
  $data = shortcode_atts( [       
    'class' => 'caption',   
  ], $atts );   
  return "<div class='{$data['class']}'>" . $content . '</div>';
}

/*
[name class="headline"]My Caption[/name]  
<div class="headline">My Caption</div>
*/

При вызове шорткода можно передать атрибут class со значением "headline", которое будет использоваться для обрамления контента shortcode тегом <div> с классом "headline".

Вложенные шорткоды

Мы описали принцип работы вложенных шорткодов в WordPress. Когда в Контентном shortcode содержится другой, он не будет обработан. Чтобы решить эту проблему, нужно использовать функцию do_shortcode() для обработки вложенных кодов внутри основного.

Вот пример кода для обработки вложенных шорткодов:
function my_shortcode( $atts, $content ) { 
return '' . do_shortcode( $content ) . '';
}

Эта функция будет обрабатывать контент основного шорткода и передавать его в do_shortcode(). Функция do_shortcode() будет обрабатывать контент и находить в нем другие shortcode, обрабатывая их рекурсивно, если это необходимо.

PHP функции для работы с shortcode

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

Мы хотим дать вам полный список PHP функций, который пригодится вам во время работы с шорткодами:
  • add_shortcode()

    Добавляет новый шоткод и хук для него.
  • shortcode_atts()

    Обрабатывает атрибуты (параметры).
  • remove_shortcode()

    Удаляет зарегистрированный.
  • remove_all_shortcodes()

    Удаляет все зарегистрированные.
  • apply_shortcodes()

    Это новое название функции do_shortcode().
  • has_shortcode()

    Находит искомый код в тексте.
  • shortcode_exists()

    Проверяет зарегистрирован или нет.
  • strip_shortcodes()

    Удаляет/вырезает все шоткоды из текста.

Как вставить шоркод в запись или страницу

В ВордПресс можно легко вставлять данную функцию, есть несколько вариантов, про которые мы сейчас и расскажем.
Хочешь запсутить рост своего сайта по SEO?
Пройди бесплатный мини-курс "Вектор SEO" Маркина Антона
4 УРОКА
которые помогут тебе найти критические проблемы на сайте
и запустить его рост
Где тебе выслать уроки?!

Shortcode в классическом редакторе

Редактируя статью, вы можете зайти во вкладку "Текст", вверху редактора справа. Там увидите html-код страницы. Вставляйте свой шоркод в нужное место и сохраняйте. Все готово, можете проверить на предварительном просмотре.

Shortcode в Gutenberg

В редакторе Gutenberg, который так невзлюбили все вебмастера, есть специальный блок, который так и называется: "Шорткод". Используйте его для вставки своего кода. Для этого просто найдите его среди других виджетов, которые есть в комплекте.

Блок «Шорткод» в Гутенберге

В редакторе блоков найдите виджет «Шорткод» — он находится в разделе «Виджеты». Позволяет вставлять любые legacy-шорткоды без написания кода вручную.

Совместимость со старыми темами

Многие премиум-темы до сих пор используют шорткоды для галерей, слайдеров и кнопок. Блок «Шорткод» сохраняет их работоспособность без переписывания.

Адаптивный просмотр в редакторе

Блок «Шорткод» показывает предпросмотр в реальном времени. Вы сразу видите, как результат будет выглядеть на телефонах, планшетах и десктопах.

Динамическое содержимое

Используйте шорткоды для вывода произвольных полей, галерей из CPT или форм. Блок «Шорткод» отлично работает с любыми динамическими данными.

Безопасная вставка

Блок экранирует потенциально опасный HTML, но при этом корректно выполняет валидные шорткоды. Не бойтесь ошибиться — редактор не сломается.

Миграция с классического редактора

При конвертации старого контента в блоки Гутенберга все шорткоды автоматически оборачиваются в специальный блок. Ничего не теряется.

Shortcode в плагине Eltmentor

Давайте мы вкратце затронем и этот момент, может кому-то пригодится такое решение. В плагине Eltmentor в редакторе страницы расположена кнопка "Шорт код". Просто нажимаете на нее и проделываете те же манипуляции, что мы рассказали выше. Т.е. вставляете свой шорт код и сохраняете.

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

Shortcode в виджетах

В админке WordPress есть такой виджет "Текст". Переносите его в сайтбар и вставляете свой код не в раздел "Визуально", а в "Текст". После чего сохраняете. Если так сделать не получится, то тогда можно выполнить вставку кода через плагин Shortcode Widget.

Shortcode с помощью плагина

Установите через админку WordPress и активируйте плагин Shortcode Widget.
Теперь заходите опять в панели управления сайтом в раздел "Внешний вид", затем выбирайте "Виджеты". Сейчас у вас добавился в наборе встроенных виджетов "Shortcode Widget", перетаскивайте его в сайтбар и спокойно прописывайте свой шорткод.

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

Удаление шорткода

Для удаления (де-регистрации) шорткода используется функция remove_shortcode( $name ).

Если нужно удалить все зарегистрированные shortcode, можно воспользоваться функцией remove_all_shortcodes().

Для удаления шорткодов из контента используется функция strip_shortcodes( $content ). Удалять следует после их добавления, поэтому лучше вызывать эту функцию во время события init.

Допустим, вам нужно удалить [awesome], который зарегистрировал какой-то плагин. Вы можете использовать следующий код:
add_action( 'init', 'unregister_shortcodes', 20 );
function unregister_shortcodes(){
remove_shortcode( 'awesome' );
}

Этот код удаляет только один shortcode. Если нужно удалить все зарегистрированные шорткоды, достаточно вызвать функцию remove_all_shortcodes():

remove_all_shortcodes()

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

А еще данный модуль является одним из самых удобных и надежных дополнений к функциям WordPress для управления редиректами и популярности веб-ресурса.

Заключение

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

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

Так нам будет удобно разобраться, что материал оказался полезным и будем еще писать на эту тему.
📚
Для написания этой статьи использовали литературу
  • 1
    Романенкова О. Н. «SEO-продвижение как эффективный инструмент интернет-маркетинга» // Стратегии бизнеса. – 2014. – № 1 (3). – С. 120-124.
  • 2
    Шлёткин М. В., Бондаренко С. И. «SEO продвижение как инструмент Интернет-маркетинга» // StudNet. – 2021. – Т. 4. – № 6. – С. 1
  • 3
    Пиксина А. Г., Ивер Н. Н. «SEO-продвижение в системе комплексного интернет-маркетинга» // Социальные науки. – 2018. – № 2. – С. 49-55.
Фото автора Антон Маркин
Антон Маркин
Автор этой статьи, SEO-эксперт & наставник

SEO с 2009 года, автор курсов по продвижению сайтов, основатель закрытого сообщества для SEO-специалистов.

Ведет блог в Telegram, где делится инсайтами и практическими кейсами.

Еще статьи по теме: