Как удалить неиспользуемые шорткоды в WordPress
В WordPress многие плагины добавляют шорткоды, которые нужно вставить в запись как [shortcode_1]. После деактивации плагина шорткод остаётся в тексте и отображается в необработанном виде на фронтенде.

Ниже — три безопасных подхода для удаления или скрытия таких шорткодов. Для каждого способа указаны плюсы, минусы и практические рекомендации.
1. Удалить шорткод напрямую из базы данных
Если вы уверены в имени шорткода и хотите удалить все его вхождения навсегда, можно выполнить SQL‑запрос, заменяющий шорткод на пустую строку в поле post_content.
UPDATE wp_posts SET post_content = REPLACE(post_content, '[shortcodename]', '') ;Замените shortcodename на имя шорткода, который нужно удалить.
Важно:
- Перед выполнением запроса сделайте полную резервную копию базы данных. Это критично.
- Этот метод необратим: после выполнения содержимое будет изменено в записях.
- У разных шорткодов бывают атрибуты и параметры, поэтому простая замена может не поймать все варианты (например, [shortcodename id=”123”]).
Когда использовать: когда вы уверены, что шорткод более не понадобится и хотите окончательно удалить все вхождения.
2. Заменить шорткод на пустое значение через functions.php
Если вы не хотите менять записи в базе данных, можно зарегистрировать пустой обработчик шорткода. Тогда шорткод останется в тексте, но при выводе он не будет рендериться и не покажет «сырой» код.
Добавьте в конец файла темы functions.php (перед закрывающим тегом ?>, если он есть) следующий код:
add_shortcode('shortcodename', 'mte_return_empty_shortcode');
function mte_return_empty_shortcode() {
return '';
}Замените shortcodename на имя шорткода, который хотите подавить.
Плюсы:
- Безопасно для содержимого: база данных не меняется.
- Можно легко вернуть отображение, удалив этот код или заменив реализацию.
Минусы и предостережения:
- Работает только если вы точно знаете имя шорткода.
- Если плагин снова активируется и использует те же фильтры/функции, возможен конфликт — проверяйте работу на тестовой среде.
3. Автоматически скрыть все неактивные шорткоды (рекомендуется при большом количестве)
Если вы не помните, какие шорткоды были установлены, можно автоматически удалить из вывода все шорткоды, которые в настоящий момент не зарегистрированы как активные. Этот способ не меняет записи в базе, а только очищает вывод.
Добавьте в конец functions.php (перед ?>) следующий код:
add_filter('the_content', 'mte_remove_unused_shortcode');
function mte_remove_unused_shortcode($content) {
$pattern = mte_get_unused_shortcode_regex();
$content = preg_replace_callback('/' . $pattern . '/s', 'strip_shortcode_tag', $content);
return $content;
}
function mte_get_unused_shortcode_regex() {
global $shortcode_tags;
$tagnames = array_keys($shortcode_tags);
$tagregexp = join('|', array_map('preg_quote', $tagnames));
$regex = '\\[(\\[?)';
$regex .= "(?!$tagregexp)";
$regex .= '\\b([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*+(?:\\[(?!\\/\\2\\])[^\\[]*+)*+)\\\\/\\2\\])?)(\\]?)';
return $regex;
}Объяснение: код получает список зарегистрированных (активных) шорткодов, собирает регулярное выражение и удаляет все теги вида [что‑то], которые не соответствуют активным шорткодам. Это модификация логики, похожей на get_shortcode_regex.
Плюсы:
- Массовая очистка без изменения базы.
- При повторной активации плагина соответствующие шорткоды снова будут работать.
Минусы и риски:
- Код удалит всё, что находится между «[» и «]» и не соответствует зарегистрированным шорткодам; возможна потеря пользовательского текста в специальных конструкциях.
- Регулярные выражения могут быть тяжёлыми на больших объёмах контента — проверяйте производительность.
Рекомендации перед любым вмешательством
- Сделайте резервную копию базы данных и файлов сайта.
- Выполняйте изменения сначала на локальной или staging среде.
- Тестируйте разные варианты шорткода: с атрибутами, вложенные шорткоды, shortcodes в виджетах.
- Используйте контроль версий для изменений в теме (Git).
Когда эти методы не сработают или опасны
- Если шорткод динамически формируется на фронтенде JavaScript‑ом — SQL‑замена ничего не изменит.
- Если шорткод использует сложные вложенные конструкции, автоматическое удаление может сломать часть текста.
- Если у вас мультиязычный сайт и шорткоды различаются по языкам — нужно тестировать каждую локаль.
Мини‑методология для выбора подхода
- Сделайте бэкап и работайте на копии сайта.
- Проанализируйте, какие шорткоды зарегистрированы: выполните простой код для вывода array_keys($shortcode_tags).
- Если имя известно и вы хотите навсегда удалить — используйте SQL.
- Если хотите временно скрыть — зарегистрируйте пустой обработчик через add_shortcode.
- Если шорткодов много и вы не помните — используйте автоматический фильтр.
- После изменений пройдитесь по наиболее важным страницам и записям.
Контрольные списки по ролям
Администратору:
- Сделать резервную копию базы данных.
- Отключить кэш (если есть) перед тестированием.
- Согласовать откатный план с разработчиком.
Разработчику:
- Проверить, какие шорткоды зарегистрированы: var_export(array_keys($shortcode_tags)).
- Тестировать SQL‑запросы на дампе базы.
- Добавить комментарии к изменениям в functions.php и коммитить в Git.
Редактору контента:
- Пройти по страницам с критическим контентом (лиды, страницы продуктов).
- Проверить, не сломался ли форматированный текст.
Критерии приёмки
- На ключевых страницах не отображаются «сырой» шорткоды в виде [shortcode].
- Нет утраченного пользовательского текста после очистки (проверено выборочно).
- Нагрузка на сайт не возросла заметно после внедрения фильтра (при больших объёмах проверено).
- В наличии рабочая резервная копия и инструкция по откату.
Краткий словарь терминов
- Шорткод — короткая метка в контенте вида [tag], которую WordPress заменяет на HTML при выводе.
- functions.php — файл темы, где можно зарегистрировать PHP‑функции и фильтры для сайта.
- preg_replace_callback — PHP‑функция для замены по регулярному выражению с вызовом callback.
Резюме
Удаление неиспользуемых шорткодов в WordPress можно провести безопасно тремя способами: прямой SQL‑запрос для окончательного удаления, регистрация пустого обработчика для временного подавления или автоматическая очистка вывода всех неактивных шорткодов. Выбор метода зависит от объёма, требований к обратимости и вашей готовности тестировать изменения. Всегда делайте резервную копию и тестируйте на staging.
Важно: даже «безопасные» патчи в theme functions.php влияют на вывод сайта — контролируйте изменения через систему контроля версий и отлаживайте на тестовой среде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента