do_shortcode()
Находит в переданном тексте зарегистрированные шорткоды и обрабатывает их.
Функция обработает только шорткоды, о которых WP знает (которые зарегистрированы как шорткоды). Шорткоды регистрируются с помощью функции add_shortcode(). Т.е. конструкции вида [some_name] не будут удалены или обработаны, если в WordPress не добавлен шорткод some_name.
Если тег шорткода неизвестен, то контент вернется как есть (шорткод в нем не будет обработан). Такое может получиться, например, когда Плагин отключен, но его шорткод используется в контенте.
Читайте обязательно: Шорткоды в WordPress.
С WP 5.4 у это функции появился алиас (точная копия): apply_shortcodes().
Хуков нет.
Возвращает
Строку
. Текст, в котором шоткоды обработаны (изменены на вывод прикрепленных к ним функций).
Использование
do_shortcode( $content, $ignore_html );
- $content(строка) (обязательный)
- Текст в котором нужно преобразовать шорткоды.
- $ignore_html(строка)
- Игнорировать ли шорткоды внутри HTML. Если поставить true, то шорткоды внутри HTML обработаны не будут.
По умолчанию: false
Видео с примерами
Примеры
#1 Обработает все шорткоды в тексте
Из файла shortcodes.php. Прикрепляет функцию do_shortcode() к фильтру the_content, который срабатывает при выводе контента поста:
add_filter( 'the_content', 'do_shortcode', 11 );
#2 Обработка отдельного шорткода
Использование шоткода в PHP файле, за пределами контента, когда нужно получить вывод шоткода отдельно.
Этот пример показывает как обработать шорткод из кода PHP. Например, если нужно вывести шорткод в где-то произвольном месте шаблона.
echo do_shortcode( '[somename]' );
или такой пример:
echo do_shortcode( '[contact-form-7 id="91" title="quote"]' );
#3 Контентный шорткод
Использование шоткода в PHP файле, за пределами контента. Для открывающих и закрывающих шорткодов:
echo do_shortcode( '[iscorrect]'. $text_to_be_wrapped_in_shortcode .'[/iscorrect]' );
#4 Включение шорткодов в виджете «Текст»
if( ! is_admin() ){ add_filter( 'widget_text', 'do_shortcode' ); }
#5 Обработка только указанного шорткода в контенте
Допустим мы хотим добавить поддержку шорткодов в комментариях, но нам не нужно чтобы там можно было использовать все возможные шорткоды. Нам нужно чтобы там работал только наш шорткод, назовем его [myshort]
.
Реализовать такую задачу можно оставив зарегистрированным только нужный нам шорткод перед вызовом функции apply_shortcodes(). Все зарегистрированные шорткоды хранятся в глобальной переменной $shortcode_tags.
// Обрабатываем шорткод [myshort] в контенте комментария. // after wpautop add_filter( 'comment_text', 'do_shortcodes_in_comment_content', 11, 2 ); function do_shortcodes_in_comment_content( $content, $comm ){ if( 'comment' === $comm->comment_type ){ $save = $shortcodes = & $GLOBALS['shortcode_tags']; $shortcodes = [ 'myshort' => $shortcodes['myshort'] ]; $content = apply_shortcodes( $content ); $shortcodes = $save; // return back } return $content; }
Заметки
- Global. Массив. $shortcode_tags List of shortcode tags and their callback hooks.
Список изменений
С версии 2.5.0 | Введена. |