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

В процессе активного использования WordPress на сайте неизбежно накапливаются шорткоды, которые уже не используются. Это может происходить после удаления плагинов, смены тем или при реорганизации контента. Неиспользуемые шорткоды не только «загрязняют» контент, но и часто выводятся на странице в виде текста, что ухудшает визуальное восприятие сайта и может негативно влиять на SEO.

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

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

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

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

Для начала нужно понять, какие именно шорткоды остались без поддержки. Это можно сделать несколькими способами:

  • Вручную: Просмотреть записи и страницы, где в тексте встречаются незамещённые шорткоды в виде текста.
  • Через базу данных: Использовать SQL-запрос для поиска в таблице wp_posts всех записей с вхождениями паттерна [shortcode].
  • С помощью плагинов: Есть плагины для поиска и замены в базе данных, например, Search Regex, которые позволяют искать и удалять шорткоды по шаблону.

Пример SQL-запроса для поиска всех записей с шорткодами (с учётом квадратных скобок):

SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%[%]%';

Но этот запрос покажет все записи с любыми шорткодами, нам нужно точечно искать именно неработающие (не зарегистрированные) шорткоды.

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

Самый надёжный способ – реализовать функцию, которая будет очищать содержимое записей от неработающих шорткодов. Для этого нужно сначала получить список всех зарегистрированных шорткодов, а затем удалить из контента все остальные.

Пример функции для удаления неиспользуемых шорткодов с префиксом wplite_:

function wplite_get_registered_shortcodes() {
    global $shortcode_tags;
    return array_keys($shortcode_tags);
}

function wplite_remove_unused_shortcodes( $content ) {
    $registered = wplite_get_registered_shortcodes();
    // Шаблон для поиска всех шорткодов
    preg_match_all('/\[(\[?)([a-z0-9_\-]+)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(\/?)(\]?)/i', $content, $matches);
    if (empty($matches[2])) {
        return $content;
    }
    foreach ($matches[2] as $i => $shortcode) {
        if (!in_array($shortcode, $registered)) {
            // Удаляем весь шорткод из контента
            $pattern = preg_quote($matches[0][$i], '/');
            $content = preg_replace('/'. $pattern .'/i', '', $content);
        }
    }
    return $content;
}

add_filter('the_content', 'wplite_remove_unused_shortcodes');

В этом коде сначала собираются все зарегистрированные шорткоды, затем в содержимом статьи ищутся все шорткоды и удаляются те, которые не зарегистрированы. Это позволяет динамически очищать контент без необходимости править каждую запись вручную.

Использование плагинов для очистки шорткодов

Если не хочется писать код, можно использовать плагины с похожей функциональностью. Например:

  • Clearfy Pro – многофункциональный плагин для оптимизации сайта, в том числе умеет удалять неработающие шорткоды.
  • Плагин Shortcode Cleaner Lite – специализированный инструмент для поиска и удаления неиспользуемых шорткодов.

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

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

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

  • Перед удалением плагина искать его шорткоды в контенте и удалять их заранее.
  • Использовать кастомные шорткоды с уникальными префиксами (например, wplite_), чтобы легко их идентифицировать.
  • Регулярно делать аудит контента с помощью плагинов или SQL-запросов.
  • Автоматизировать очистку шорткодов, если сайт большой и много контента.

Пример регистрации шорткода с префиксом wplite_

Для удобства идентификации и очистки создадим пример регистрации шорткода:

function wplite_register_example_shortcode() {
    add_shortcode('wplite_example', function($atts, $content = null) {
        return '<div class="wplite-example">' . esc_html($content) . '</div>';
    });
}
add_action('init', 'wplite_register_example_shortcode');

Такой подход помогает избежать конфликтов и облегчает поддержку.

Обработка шорткодов в базах данных: массовое удаление

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

Пример запроса для удаления шорткода [old_shortcode] из контента всех записей:

UPDATE wp_posts 
SET post_content = REPLACE(post_content, '[old_shortcode]', '') 
WHERE post_content LIKE '%[old_shortcode]%';

Для более сложных шорткодов с параметрами подойдёт использование регулярных выражений через WP CLI или специальные плагины.

Итоговые рекомендации

Удаление неиспользуемых шорткодов – важная задача для поддержания чистоты и скорости сайта. Рекомендуется комбинировать автоматические методы с ручной проверкой, использовать префиксы в шорткодах, а для массовых изменений применять проверенные инструменты и плагины, например, Clearfy Pro. Благодаря этому вы сможете избежать визуального мусора и сохранить качество сайта на высоком уровне.

Как использовать Custom Post Types в WordPress для создания новых видов контента
10.03.2026
Как удалить или изменить метаданные пользователя в WordPress
24.01.2026
Как удалить или изменить атрибуты продуктов WooCommerce через код
25.04.2026
Как использовать REST API в WordPress для создания кастомных приложений
22.11.2025
Как удалить привязку к аккаунту WordPress через базу данных
09.01.2026