strip_shortcodes()
Видаляє/вирізує всі шоткод з переданого тексту (контенту).
Видалятимуться лише ті шоткоди, про які знає WordPress, тобто. лише зареєстровані шоткоди. Конструкції виду [...]
або [asd]...[/asd]
видалятися не будуть.
(швидко) | 50000 разів – 0.44 сек
(дуже швидко) |
PHP 7.1.11, WP 4.9.6
Хуки з функції
Повертає
Строку
. Текст без шоткод.
Використання
$content = strip_shortcodes($content);
-
$content
(рядок) (обов’язковий) - Текст, де потрібно видалити всі шорткоди.
Приклади
#1 Вирізаємо шоткод з контенту
Видалимо шоткоди в текстах на головній сторінці (home), але нічого не видалятимемо на сторінці посту (single.php) або сторінці архівів (рубрики, мітки, дати).
add_filter('the_content', 'remove_shortcode_from_index'); function remove_shortcode_from_index($content) { if ( is_home() ) { $content = strip_shortcodes($content); } return $content; }
#2 Видалимо шоткоди, яких немає у WP (нове з версії 4.4)
З версії 4.4. видаляти шоткод, про які ВП нічого не знає стало простіше – не потрібно писати жодних регулярок. Все можна зробити стандартними функціями WordPress. А також через фільтр.
Видалятимуться шорткоди за допомогою функції get_shortcode_regex() , в яку тепер можна передати масив, де вказати назву шоткода, який потрібно вирізати з контенту і таким чином отримати необхідне регулювання для використання в preg_replace() .
$content = "Початок [asd]text[/asd] кінець. І ще один контентний [myshort]text[/myshort] все."; $regex = get_shortcode_regex( array('myshort') ); $content = preg_replace( "/$regex/", '', $content ); echo $content; // Виведе: Початок [asd] text [/ asd] кінець. І ще один контентний усі.
#3 Видалення неіснуючого шорткоду через фільтр
Або можна додати неіснуючий шорткод у фільтр strip_shortcodes_tagnames , щоб ця функція strip_shortcodes() видаляла зазначений шорткод у тому числі.
// додамо неіснуючий шорткод масив для видалення add_filter( 'strip_shortcodes_tagnames', function($tags_to_remove){ $tags_to_remove[] = 'myshort'; return $tags_to_remove; } ); $content = "Початок [asd]text[/asd] кінець. І ще один контентний [myshort]text[/myshort] все."; $content = strip_shortcodes($content); echo $content; // Виведе: Початок [asd] text [/ asd] кінець. І ще один контентний усі.
#4 Видалимо шорткоди, яких немає в WP (через регулювання)
strip_shortcodes() не буде видаляти конструкції схожі на шоткоди: [asd]
або [asd]...[/asd]
якщо вони не зареєстровані в WordPress. Щоб це зробити, можна скористатися регулярним виразом:
$content = "1 [foo] [asd]text[/asd] 2"; $content = preg_replace( '~[[^]]+]~', '', $content ); echo $content; // Поверне: 1 text 2
Щоб вирізати тільки потрібний шорткод, наприклад [myshort] або [myshort]text[/myshort] використовуйте таке регулювання:
$content = "Початок [asd]text[/asd] кінець. І ще один [myshort] і контентний [myshort]text[/myshort] все."; $content = preg_replace( '~[/?myshort[^]]*]~', '', $content ); echo $content; // виведе: Початок [asd] text [/ asd] кінець. І ще один і контентний text все.
Виріжемо «контентний шорткод» разом із контеном:
$content = "Початок [asd]text[/asd] кінець. І ще один контентний [myshort]text[/myshort] все."; $content = preg_replace( '~(?:[(myshort)[^]]*].*?[/])|(?:[myshort[^]]*])~s ', '', $content); echo $content; // Виведе: Початок [asd] text [/ asd] кінець. І ще один контентний усі.
нотатки
- Global. Масив. $shortcode_tags
список змін
З версії 2.5.0 | Введено. |