Функция apply_shortcodes()
была представлена в WordPress 5.4 как алиас для уже существующей функции do_shortcode()
. Она служит для поиска и обработки шорткодов в строках контента и является удобным инструментом для разработчиков тем и плагинов. В этой статье мы рассмотрим, как работает эта функция, в чем ее отличие от старой версии, и приведем примеры использования.
Описание
Функция apply_shortcodes()
выполняет поиск в тексте переданного контента шорткодов и фильтрует их через соответствующие хук-функции, что позволяет их обработку и замену на результат выполнения шорткода.
apply_shortcodes( string $content, bool $ignore_html = false ): string
- $content (обязательный) — строка, содержащая текст с шорткодами, которые нужно обработать.
- $ignore_html (необязательный) — булевое значение, которое указывает, следует ли игнорировать шорткоды, находящиеся внутри HTML-тегов. По умолчанию значение установлено на
false
, то есть шорткоды будут обрабатываться внутри HTML-тегов.
Возвращаемое значение
Функция возвращает строку, в которой все зарегистрированные шорткоды были обработаны и заменены результатами выполнения соответствующих функций.
Отличие от do_shortcode()
Хотя apply_shortcodes()
является алиасом для do_shortcode()
, её использование позволяет сделать код более выразительным и читабельным, так как название функции явно указывает на её основную задачу — применение шорткодов. Например, старый подход с использованием do_shortcode()
выглядел так:
echo do_shortcode( '[myshrtcode]My Text[/myshrtcode]' );
С выходом WordPress 5.4, это можно заменить на:
echo apply_shortcodes( '[myshrtcode]My Text[/myshrtcode]' );
Таким образом, код стал более читабельным и интуитивно понятным.
Пример 1: Обработка отдельного шорткода
Предположим, у вас есть шорткод [shortcodeslug]
, который зарегистрирован с помощью функции add_shortcode()
. Вы можете использовать apply_shortcodes()
для его вывода в любом месте шаблона:
echo apply_shortcodes( '[shortcodeslug]' );
Если шорткод содержит атрибуты, вы можете передать их следующим образом:
echo apply_shortcodes( '[contact-form-7 id="1" title="Default Form"]' );
Пример 2: Обработка контентного шорткода
Часто шорткоды используются в контенте, например, для оборачивания текста:
echo apply_shortcodes( '[myshrtcode]My Text[/myshrtcode]' );
Этот пример продемонстрирует, как обработать шорткод, который оборачивает текст. После применения функции, текст будет заменен результатом выполнения функции, прикрепленной к этому шорткоду.
Пример 3: Игнорирование шорткодов внутри HTML
Иногда необходимо, чтобы шорткоды, находящиеся внутри HTML-тегов, не обрабатывались. Для этого можно воспользоваться вторым параметром ignore_html
:
$content = '<div>[myshrtcode]Text inside HTML[/myshrtcode]</div>';
echo apply_shortcodes( $content, true );
В этом примере шорткод внутри HTML-тега <div>
не будет обработан.
Пример 4: Использование шорткодов для динамического контента
Шорткоды могут быть использованы для вывода динамического контента, например, списка последних постов или цитаты дня:
echo apply_shortcodes( '[recent_posts posts="3"]' );
echo apply_shortcodes( '[quote_of_the_day]' );
Здесь шорткоды [recent_posts]
и [quote_of_the_day]
заменяются на сгенерированные данные (например, последние посты или случайную цитату).
Заключение
Функция apply_shortcodes()
— это новый, более наглядный способ обработки шорткодов в WordPress. Хотя она фактически является алиасом для do_shortcode()
, её использование делает код более читаемым и понятным для разработчиков. Функция поддерживает такие же параметры и логику, как и старая версия, и её можно безопасно использовать в любых частях вашего проекта, где требуются шорткоды.