Функция do_shortcode()
в WordPress — это один из ключевых инструментов для работы с шорткодами, позволяющий находить их в содержимом и обрабатывать через соответствующие хук-функции. Эта функция используется для обработки шорткодов в любом контенте, включая посты, страницы, текстовые виджеты и другие области сайта.
do_shortcode( string $content, bool $ignore_html = false ): string
Параметры:
- $content (строка, обязательный параметр) — контент, в котором необходимо найти и обработать шорткоды.
- $ignore_html (булево значение, опционально) — если установить
true
, шорткоды внутри HTML-тегов будут игнорироваться и не обрабатываться. По умолчаниюfalse
.
Возвращаемое значение:
Функция возвращает строку с обработанными шорткодами, которые заменяются на результат выполнения соответствующих функций.
Как это работает?
Функция do_shortcode()
ищет зарегистрированные шорткоды в переданном контенте и заменяет их на соответствующие результаты. Если в контенте есть шорткод, который не был зарегистрирован, то он остается неизменным. Например, если плагин, предоставляющий шорткод, был отключен, то шорткод все равно отобразится в контенте как текст.
Пример 1: Обработка шорткода в PHP-файле
В случае, когда вам нужно использовать шорткод вне текстового редактора WordPress, его можно вызвать напрямую в PHP-файле:
echo do_shortcode( '[my_shortcode]' );
Это один из самых простых способов использовать шорткод в любом месте шаблона WordPress.
Пример 2: Шорткод с открывающим и закрывающим тегами
Если ваш шорткод имеет открывающий и закрывающий теги, вы можете передать контент, который будет обернут шорткодом:
$text_to_be_wrapped_in_shortcode = "This is my text";
echo do_shortcode( '[iscorrect]' . $text_to_be_wrapped_in_shortcode . '[/iscorrect]' );
Пример 3: Шорткод в текстовом виджете
Обычно шорткоды в текстовых виджетах не работают по умолчанию. Однако вы можете добавить поддержку шорткодов в текстовые виджеты с помощью фильтра:
add_filter( 'widget_text', 'do_shortcode' );
После этого шорткоды, размещенные в текстовом виджете, будут обработаны.
Пример 4: Использование шорткодов в форме
Иногда шорткоды могут использоваться для вывода форм, например, с помощью Contact Form 7:
echo do_shortcode( '[contact-form-7 id="91" title="quote"]' );
Пример 5: Сохранение результата шорткода в переменной
Результат работы шорткода можно сохранить в переменной для дальнейшего использования:
$var = do_shortcode( '[my_shortcode]' );
echo $var;
Пример 6: Обработка шорткодов в комментариях
Если вам необходимо разрешить использование шорткодов в комментариях, добавьте следующий фильтр:
add_filter('comment_text', 'do_shortcode');
add_filter('get_comment_text', 'do_shortcode');
Теперь шорткоды в комментариях будут обрабатываться и выводить соответствующий результат.
Пример 7: Добавление шорткода перед каждым постом
Если нужно вывести шорткод перед каждым постом на странице, это можно сделать через хук loop_start
:
add_action( 'loop_start', 'shortcode_before_entry' );
function shortcode_before_entry() {
if ( ! is_singular( 'post' ) ) {
return;
}
echo do_shortcode('[your_shortcode_handle]');
}
Этот код добавит вывод шорткода перед каждым постом на страницах записей.
Заключение
Функция do_shortcode()
— это мощный инструмент для работы с шорткодами в WordPress. Она предоставляет гибкость для обработки шорткодов в различных частях сайта, включая контент, виджеты, комментарии и другие области. С её помощью разработчики могут легко добавлять динамический контент и функциональность на свои сайты.