Функция remove_shortcode( string $tag )
в WordPress позволяет удалить ранее зарегистрированный шорткод. Она отключает обработчик шорткода, так что при следующей попытке его использования шорткод не будет обработан.
Эта функция полезна, если вы хотите временно или полностью отключить определенные шорткоды на вашем сайте или в конкретных частях контента.
remove_shortcode( string $tag )
Параметры:
$tag
(строка) — обязательный параметр. Имя шорткода, который нужно удалить.
Возвращаемое значение: Ничего не возвращает (null
).
Когда использовать?
- Отключение ненужных шорткодов, чтобы предотвратить их обработку в контенте.
- Замена стандартных шорткодов на свои кастомные решения.
- Отключение шорткодов на отдельных страницах или для определенных условий (например, для неавторизованных пользователей).
Пример 1: Удаление шорткода gallery
В WordPress по умолчанию есть шорткод gallery
, который используется для вывода галерей. Чтобы отключить обработку этого шорткода и оставить его в виде текста, можно использовать remove_shortcode()
:
remove_shortcode( 'gallery' );
the_content(); // Вызовет вывод контента, но шорткод не будет обработан
Теперь, вместо вывода галереи, в контенте будет отображен сам шорткод, например gallery ids="1,2,3"
.
Пример 2: Удаление кастомного шорткода
Предположим, у вас есть кастомный шорткод myShortcode
, который был добавлен ранее. Для его удаления можно вызвать remove_shortcode()
:
add_action( 'init', 'my_add_shortcodes' );
function my_add_shortcodes() {
add_shortcode( 'myShortcode', 'my_shortcode_function' );
}
// Удаляем шорткод на более позднем этапе
add_action( 'init', 'remove_my_shortcodes', 20 );
function remove_my_shortcodes() {
remove_shortcode( 'myShortcode' );
}
Здесь сначала шорткод добавляется с помощью функции add_shortcode()
, а затем на более позднем этапе выполнения WordPress этот шорткод удаляется.
Пример 3: Удаление шорткодов на определенных страницах
Допустим, вы хотите отключить шорткоды только на некоторых страницах. В этом примере шорткоды отключаются для страниц с определенными ID:
add_action( 'the_post', 'remove_shortcodes_on_specific_pages', 20 );
function remove_shortcodes_on_specific_pages() {
$page_ids = array( 22, 2599 ); // ID страниц, на которых нужно отключить шорткоды
$shortcodes_to_remove = array( 'my_shortcode', 'another_shortcode' ); // Шорткоды для удаления
if ( in_array( get_the_ID(), $page_ids ) ) {
foreach ( $shortcodes_to_remove as $shortcode ) {
remove_shortcode( $shortcode );
}
}
}
Этот код удалит указанные шорткоды только на страницах с ID 22
и 2599
.
Пример 4: Удаление шорткода и его остатков из контента
Иногда нужно не просто отключить шорткод, но и полностью удалить его из текста. Это можно сделать, добавив фильтр для контента с регулярным выражением:
add_action( 'init', 'remove_and_strip_shortcode' );
function remove_and_strip_shortcode() {
remove_shortcode( 'myshortcode' ); // Удаляем шорткод
// Вырезаем шорткод и его параметры из контента
$strip_shortcode_content = function( $content ) {
// Удаляем шорткод вида [myshortcode] и его параметры
$content = preg_replace( '~\[myshortcode[^\]]*\]~', '', $content );
// Удаляем шорткод, обрамляющий контент: [myshortcode]текст[/myshortcode]
$content = preg_replace( '~\[(myshortcode)[^\]]*\].*?\[\/myshortcode\]~s', '', $content );
return $content;
};
// Применяем фильтр к содержимому постов
add_filter( 'the_content', $strip_shortcode_content, 5 );
}
Этот пример удаляет шорткод [myshortcode]
и его параметры из текста постов. Если шорткод окружает какой-либо контент, он также будет удален.
Важные моменты
- Когда использовать: Лучше всего вызывать
remove_shortcode()
на более поздних этапах выполнения WordPress (например, в хукеinit
с более высоким приоритетом), чтобы убедиться, что шорткоды были зарегистрированы перед их удалением. - Административные страницы: Шорткоды могут продолжать работать в админке, даже если они удалены на сайте, поэтому важно учитывать, что это изменение не затронет визуальный редактор WordPress.
Заключение
Функция remove_shortcode()
предоставляет простой способ отключения любого зарегистрированного шорткода в WordPress. Это может быть полезно для контроля над контентом или для замены стандартных шорткодов своими собственными решениями.