# Функция STRIP_SHORTCODES() │ WP 2.5.0
Функция strip_shortcodes() удаляет все теги шорткодов из указанного контента.
- **Время выполнения:** 1 раз — 0.000307 сек (быстро) | 50000 раз — 0.44 сек (очень быстро)
- **Версия PHP:** 7.1.11
- **Версия WP:** 4.9.6
## Хуки функции
- **strip_shortcodes_tagnames**
## Возвращаемое значение
Возвращает строку — контент без тегов шорткодов.
## Применение
```php
strip_shortcodes( $content );
Параметры
$content(строка, обязательный) — контент, из которого нужно удалить теги шорткодов.
Примеры использования
Пример 1: Удаление шорткодов из контента
Давайте удалим шорткоды только с главной странице, оставив остальной контент (например, отдельные записи, ка��егории, метки) нетронутым.
add_filter( 'the_content', 'remove_shortcode_from_index' );
function remove_shortcode_from_index( $content ) {
if ( is_home() ) {
$content = strip_shortcodes( $content );
}
return $content;
}
Пример 2: Удаление несуществующего шорткода (с использованием get_shortcode_regex())
С версии 4.4 стало проще удалять шорткоды, о которых WordPress не знает. Для этого достаточно использовать стандартные функции.
$content = "Начало [asd]текст[/asd] конец. И один ещё [myshort]текст[/myshort] весь.";
$shortcodes_to_remove = [ 'myshort' ];
$regex = get_shortcode_regex( $shortcodes_to_remove );
$content = preg_replace( "/$regex/", '', $content );
echo $content; // Вывод: Начало [asd]текст[/asd] конец. И один ещё весь.
Пример 3: Удаление несуществующего шорткода (через фильтр)
Обратите внимание, что эта функция удаляет только те шорткоды, которые были зарегистрированы на момент обработки функции. Если остались "недостающие" шорткоды (например, добавленные плагином, который уже отключен), функция не сможет их удалить.
add_filter( 'strip_shortcodes_tagnames', function( $tags_to_remove ){
$tags_to_remove[] = 'myshort';
return $tags_to_remove;
});
$content = "Начало [asd]текст[/asd] конец. И один ещё [myshort]текст[/myshort] весь.";
$content = strip_shortcodes( $content );
echo $content; // Вывод: Начало [asd]текст[/asd] конец. И один ещё весь.
Пример 4: Удаление несуществующего шорткода (с помощью регулярных выражений)
Эта функция не удаляет конструкции, подобные шорткодам: [asd] или [asd]...[/asd], если они не зарегистрированы в WordPress. Для этого можно использовать регулярные выражения.
$content = "1 [foo] [asd]текст[/asd] 2";
$content = preg_replace( '~[[^]]+]~', '', $content );
echo $content; // Возвращает: 1 текст 2
Чтобы удалить только определённый шорткод, например [myshort] или [myshort]текст[/myshort], используйте следующее регулярное выражение:
$content = "Начало [asd]текст[/asd] конец. И другой [myshort] и контент [myshort]текст[/myshort] весь.";
$content = preg_replace( '~[/?myshort[^]]*]~', '', $content );
echo $content; // Вывод: Начало [asd]текст[/asd] конец. И другой и контент текст весь.
Чтобы удалить также "контент шорткода", используйте это регулярное выражение:
$content = "Начало [asd]текст[/asd] конец. И один ещё [myshort]текст[/myshort] весь.";
$content = preg_replace( '~(?:[(myshort)[^]]*].*?[/])|(?:[myshort[^]]*])~s', '', $content );
echo $content; // Вывод: Начало [asd]текст[/asd] конец. И один ещё весь.
Примечания
- Глобальная переменная:
$shortcode_tags
История изменений
- С версии 2.5.0 — введена функция.
Связанные функции
add_shortcode()apply_shortcodes()do_shortcode()gallery_shortcode()get_shortcode_regex()has_shortcode()remove_all_shortcodes()remove_shortcode()shortcode_atts()shortcode_exists()shortcode_parse_atts()wp_audio_shortcode()wp_playlist_shortcode()wp_video_shortcode()