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 | Введено. |