WordPress как на ладони
Плагин рекламы для WordPress wordpress jino

do_shortcode() WP 2.5

Просматривает текст на наличие в нем шорткодов и применяет зарегистрированные функции к найденным шорткодам.

Функция обработает только шорткоды, о которых WP знает (которые зарегистрированы как шорткоды). Шорткоды регистрируются с помощью функции add_shortcode(). Т.е. конструкции вида [some_name] ну будут удалены или обработаны если в WordPress не добавлен шорткод some_name.

Шорткод (шоткод) - это конструкция в тексте, которая будет обработана и заменена на какой-либо HTML код. Шорткод может вызываться по-разному. Пример вызова шорткода [somename]:

  • [somename]
  • [somename id="123" size="medium"]
  • [somename]текст[/somename]

Она обрабатывается функции отвечающей за данный шоткод. Шоткоды и функции из обрабатывающие регистрируются отдельно через add_shortcode().

Хуков нет.

Возвращает

Строку. Текст, в котором шоткоды обработаны (изменены на вывод прикрепленных к ним функций).

Использование

do_shortcode( $content );
$content(строка) (обязательный)
Текст в котором нужно преобразовать шорткоды.
По умолчанию: нет

Примеры

#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');

Код do shortcode: wp-includes/shortcodes.php WP 4.8

<?php
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 <!--[if IE ]>
	$content = unescape_invalid_shortcodes( $content );

	return $content;
}

Cвязанные функции

Из раздела: Шоткоды

Danya 50
Программист фрилансер. Кодингом на PHP занимаю с 2008 года.
do_shortcode 10 комментариев
  • Артём

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

    Ответить2.3 года назад #
  • Юрец cайт: виртуальная-жд.рф

    Просто. Спасибо)

    1
  • Andrew

    Подскажите пожалуйста, каким фильтром можно инициировать выполнение всех шорткодов в тексте и запись результата в переменную?

    • Михаил
      $string_with_shortcodes = "<div>this is a string with [anyshortcode1] and this is [anyshortcode2]</div>";
      echo do_shortcode($string_with_shortcodes);

      Как-то так.

      Ответить2 месяца назад #
      1
  • Павел
    @

    Подскажите, пожалуйста, как сделать так, чтобы шорткод выводился в записях конкретной категории?

    Ответитьмесяц назад #
  • Артём

    Подскажите, как получиить текст между начальным и конечным тегом шорткода по номеру поста?

    Ответитьмесяц назад #
  • Артур

    У меня есть к примеру шорткод [contact-form-7 id="91"]. Каким оразом я могу вивести этот шорткод если у меня поменяется его id. Хотелось бы что бы я мог выбрать в админке название моей формы и у меня вывелась именно форма с этим названием.

    Ответитьмесяц назад #

Здравствуйте, !

Ваш комментарий