do_shortcode() WP 2.5.0

Знаходить у переданому тексті зареєстровані шорткоди та обробляє їх.

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

Якщо тег шорткоду невідомий, то контент повернеться як є (шорткод у ньому не буде оброблений). Таке може вийти, наприклад, коли Плагін відключено, але його шорткод використовується в контенті.

Читайте обов’язково: Шорткоди в WordPress .

З WP 5.4 у цієї функції виник аліас (точна копія): apply_shortcodes() .

1 раз – 0.000387 сек
(швидко) | 50000 разів – 0.71 сек
(дуже швидко) |
PHP 7.0.32, WP 5.0.3

Хуків немає.

Повертає

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

Використання

do_shortcode($content, $ignore_html);
$content
(рядок) (обов’язковий)
Текст у якому потрібно перетворити шорткод.
$ignore_html
(рядок)
Чи ігнорувати шорткоди всередині HTML. Якщо поставити true, то шорткод всередині HTML оброблені не будуть.


Типово: false

Відео з прикладами

Приклади

0

#1 Обробить усі шорткоди в тексті

З файлу shortcodes.php . Прикріплює функцію do_shortcode() до фільтра the_content , який спрацьовує при виведенні контенту посту:

add_filter( 'the_content', 'do_shortcode', 11);
0

#2 Обробка окремого шорткоду

Використання шоткоду в PHP файлі, за межами контенту, коли потрібно отримати вивод шоткоду окремо.

Цей приклад показує як обробити шорткод із коду PHP. Наприклад, якщо потрібно вивести шорткод у десь довільному місці шаблону.

echo do_shortcode('[somename]');

або такий приклад:

echo do_shortcode( '[contact-form-7 id="91" title="quote"]' );
0

#3 Контентний шорткод

Використання шоткод в PHP файлі, за межами контенту. Для шорткодів, що відкривають і закривають:

echo do_shortcode( '[iscorrect]'. $text_to_be_wrapped_in_shortcode .'[/iscorrect]' );
0

#4 Увімкнення шорткодів у віджеті «Текст»

if( ! is_admin() ){
	add_filter( 'widget_text', 'do_shortcode');
}
0

#5 Обробка лише вказаного шорткоду в контенті

Допустимо ми хочемо додати підтримку шорткодів у коментарях, але нам не потрібно, щоб там можна було використовувати всі можливі шорткоди. Нам потрібно, щоб там працював тільки наш шорткод, назвемо його [myshort].

Реалізувати таке завдання можна залишивши зареєстрованим лише потрібний нам шорткод перед викликом функції $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 і їх callback hooks.

список змін

З версії 2.5.0Введено.

Код do_shortcode() WP 6.0.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 в $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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *