Как удалить избитые шорткоды в WordPress: практические методы и примеры кода

В процессе работы с WordPress часто сталкиваешься с ситуацией, когда после удаления плагина или изменения темы в контенте остаются «избитые» шорткоды — короткие теги, которые больше не работают и портят внешний вид страниц. В этой статье мы разберёмся, как эффективно найти и удалить такие шорткоды, используя как готовые плагины, так и собственные решения на PHP.

Что такое избитые шорткоды и почему их важно удалять

Избитые шорткоды — это те, которые остались в тексте постов, страниц или виджетов, но функционал которых уже недоступен, потому что соответствующий плагин отключён или удалён. Они выглядят как текст с квадратными скобками, например [example_shortcode], но не преобразуются в нужный контент.

Если такие шорткоды не удалять, это приводит к:

  • Неаккуратному выводу текста с квадратными скобками на сайте.
  • Потере удобочитаемости контента для пользователей.
  • Потенциальным ошибкам вёрстки и дизайна.

Поэтому регулярная очистка от избитых шорткодов — важная задача для каждого разработчика и администратора WordPress.

Автоматическое удаление избитых шорткодов с помощью плагинов

Самый простой способ — использовать проверенный плагин, который сканирует базу и удаляет неработающие шорткоды.

Плагин Remove Orphan Shortcodes

Плагин Remove Orphan Shortcodes позволяет за пару кликов очистить все записи от шорткодов, которые не зарегистрированы в текущей установке WordPress. Он безопасен, имеет фильтры для исключения нужных шорткодов и сохраняет резервные копии.

Пример использования:

  • Установите и активируйте плагин.
  • Перейдите в настройки плагина и запустите сканирование.
  • Удалите найденные избитые шорткоды одним кликом.

Плагин Shortcode Cleaner

Ещё один полезный инструмент — Shortcode Cleaner. Он позволяет не только удалять избитые шорткоды, но и заменять их на кастомный текст или HTML, что удобно для SEO и дизайна.

Удаление избитых шорткодов с помощью кода в functions.php

Если вы предпочитаете не устанавливать лишние плагины, можно написать простой код, который будет находить и удалять избитые шорткоды из контента при выводе или сохранении.

Функция для удаления всех незарегистрированных шорткодов из контента

function wpskills_remove_orphan_shortcodes($content) {
    global $shortcode_tags;
    // Регулярное выражение для поиска всех шорткодов
    preg_match_all('/\[(\[?)([\w\-]+)(?![\w\-])([^\]\/]*(?:\/(?!\])[^\]\/]+)*)(\/?)](\]?)/', $content, $matches);
    if(empty($matches[2])) return $content;
    foreach($matches[2] as $index => $shortcode) {
        if(!isset($shortcode_tags[$shortcode])) {
            // Удаляем шорткод из контента
            $full_shortcode = $matches[0][$index];
            $content = str_replace($full_shortcode, '', $content);
        }
    }
    return $content;
}
add_filter('the_content', 'wpskills_remove_orphan_shortcodes');

Этот код ищет все шорткоды в контенте и удаляет те, которых нет в списке зарегистрированных ($shortcode_tags — глобальный массив всех активных шорткодов). Фильтр the_content гарантирует, что очистка происходит при выводе поста.

Удаление избитых шорткодов при сохранении записи

Чтобы очистить контент ещё на этапе сохранения, используйте следующий код:

function wpskills_clean_shortcodes_on_save($post_id) {
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if(!current_user_can('edit_post', $post_id)) return;

    $post = get_post($post_id);
    if(!$post) return;

    $clean_content = wpskills_remove_orphan_shortcodes($post->post_content);

    if($clean_content !== $post->post_content) {
        remove_action('save_post', 'wpskills_clean_shortcodes_on_save');
        wp_update_post(array(
            'ID' => $post_id,
            'post_content' => $clean_content
        ));
        add_action('save_post', 'wpskills_clean_shortcodes_on_save');
    }
}
add_action('save_post', 'wpskills_clean_shortcodes_on_save');

Этот подход гарантирует, что при сохранении записи «избитые» шорткоды будут удалены из базы данных, не дожидаясь вывода.

Как избежать появления избитых шорткодов в будущем

Чтобы минимизировать проблему с избитыми шорткодами, следуйте простым рекомендациям:

  • Перед удалением плагина отключайте все шорткоды этого плагина или заменяйте их на альтернативные.
  • Используйте системные средства поиска по базе (например, через SQL) для массовой замены или удаления шорткодов.
  • Внедрите в тему или плагин универсальные заглушки для ключевых шорткодов, чтобы при их отсутствии выводился нейтральный текст, а не код.

Пример заглушки для шорткода

function wpskills_fallback_shortcode($atts, $content = null) {
    return '<span style="color: red;">[шорткод временно недоступен]</span>';
}
add_shortcode('example_shortcode', 'wpskills_fallback_shortcode');

Такой код регистрирует шорткод, который просто выводит предупреждение вместо ошибки и портящего дизайн кода.

Выводы и рекомендации

Удаление избитых шорткодов — обязательная часть поддержки WordPress-сайтов, особенно если вы активно меняете набор плагинов. Лучший вариант — комбинировать автоматические плагины для первичной очистки и кастомный код для тонкой настройки. Такой подход обеспечит чистоту контента и стабильность отображения страниц.

Если хотите подробнее ознакомиться с плагинами для очистки шорткодов, смотрите каталог плагинов на WPSHOP.

WordPress: автоматическое удаление пустых параграфов p в контенте
04.12.2025
WooCommerce: решение проблем с неотображением промокодов в корзине
20.05.2026
Отложенный запуск задач в WordPress без пингов: практическое руководство
14.04.2026
Оптимизация производительности WP_Query с meta_query в WordPress
18.03.2026
WooCommerce: как исправить проблему с неотображением корзины после обновления
04.05.2026