# do_shortcode()

URL: https://chugunov.pro/api-wordpress/functions/do_shortcode/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.5.0.

## Сигнатура

```php
do_shortcode( string $content, bool $ignore_html = false ): string
```

## Описание

Если теги шорткодов не определены, содержимое возвращается без какой-либо фильтрации. Это может вызвать проблемы, когда плагины отключены, но шорткод всё равно отображается в записи или содержимом.

## Параметры

- `$content` `string` — обязательный. Содержимое для поиска шорткодов.
- `$ignore_html` `bool` — необязательный, по умолчанию `false`. Если true, шорткоды внутри HTML-элементов будут пропущены.

## Возвращаемое значение

`string`

## Исходный код

Файл: `wp-includes/shortcodes.php:243`

```php
function do_shortcode( $content, $ignore_html = false ) {
	global $shortcode_tags;

	if ( ! str_contains( $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;
	}

	// Ensure this context is only added once if shortcodes are nested.
	$has_filter   = has_filter( 'wp_get_attachment_image_context', '_filter_do_shortcode_context' );
	$filter_added = false;

	if ( ! $has_filter ) {
		$filter_added = add_filter( 'wp_get_attachment_image_context', '_filter_do_shortcode_context' );
	}

	$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 );

	// Only remove the filter if it was added in this scope.
	if ( $filter_added ) {
		remove_filter( 'wp_get_attachment_image_context', '_filter_do_shortcode_context' );
	}

	return $content;
}
```

## История изменений

- 2.5.0 — Introduced.

## Связанные

Использует: [`do_shortcodes_in_html_tags`](https://chugunov.pro/api-wordpress/functions/do_shortcodes_in_html_tags/), [`unescape_invalid_shortcodes`](https://chugunov.pro/api-wordpress/functions/unescape_invalid_shortcodes/), [`get_shortcode_regex`](https://chugunov.pro/api-wordpress/functions/get_shortcode_regex/), [`has_filter`](https://chugunov.pro/api-wordpress/functions/has_filter/), [`add_filter`](https://chugunov.pro/api-wordpress/functions/add_filter/), [`remove_filter`](https://chugunov.pro/api-wordpress/functions/remove_filter/).
Используется в: [`get_the_block_template_html`](https://chugunov.pro/api-wordpress/functions/get_the_block_template_html/), [`apply_shortcodes`](https://chugunov.pro/api-wordpress/functions/apply_shortcodes/), [`wp_ajax_parse_embed`](https://chugunov.pro/api-wordpress/functions/wp_ajax_parse_embed/), [`wp_ajax_parse_media_shortcode`](https://chugunov.pro/api-wordpress/functions/wp_ajax_parse_media_shortcode/), `WP_Widget_Text::widget`, `WP_Embed::run_shortcode`, [`img_caption_shortcode`](https://chugunov.pro/api-wordpress/functions/img_caption_shortcode/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/do_shortcode/
