- do_shortcode() │ WP 2.5.0
- Возвращает
- Использование
- Видео с примерами
- Примеры
- #1 Обработает все шорткоды в тексте
- #2 Обработка отдельного шорткода
- #3 Контентный шорткод
- #4 Включение шорткодов в виджете «Текст»
- #5 Обработка только указанного шорткода в контенте
- Заметки
- Список изменений
- Код do_shortcode() do shortcode WP 6.2.2
- Cвязанные функции
- Шорткоды
- Вызов шорткода из PHP в WordPress
- Порядок действий по добавлению шорткода в PHP
- Как легко вставить шорткод в WordPress: в шаблон, в страницу и в виджет
- Вставить шорткод в запись или страницу
- В классическом редакторе WordPress
- В Gutenberg
- В плагине Elementor
- Вставить напрямую в шаблон
- С помощью функций темы
- В PHP документе
- В виджетах
- Виджет текст
do_shortcode() │ WP 2.5.0
Находит в переданном тексте зарегистрированные шорткоды и обрабатывает их. Функция обработает только шорткоды, о которых WP знает (которые зарегистрированы как шорткоды). Шорткоды регистрируются с помощью функции add_shortcode(). Т.е. конструкции вида [some_name] не будут удалены или обработаны, если в WordPress не добавлен шорткод some_name . Если тег шорткода неизвестен, то контент вернется как есть (шорткод в нем не будет обработан). Такое может получиться, например, когда Плагин отключен, но его шорткод используется в контенте.
Возвращает
Использование
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 title="quote"]' );
#3 Контентный шорткод
echo do_shortcode( '[iscorrect]'. $text_to_be_wrapped_in_shortcode .'[/iscorrect]' );
#4 Включение шорткодов в виджете «Текст»
#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; >
Заметки
Список изменений
Код do_shortcode() do shortcode WP 6.2.2
function do_shortcode( $content, $ignore_html = false ) < global $shortcode_tags; if ( false === strpos( $content, '[' ) ) < return $content; >if ( empty( $shortcode_tags ) || ! is_array( $shortcode_tags ) ) < return $content; >// Find all registered tag names in $content. preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches ); $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] ); if ( empty( $tagnames ) ) < return $content; >$content = do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames ); $pattern = get_shortcode_regex( $tagnames ); $content = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $content ); // Always restore square braces so we don't break things like