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

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

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

Неиспользуемые шорткоды — это шорткоды, определенные в коде темы или плагинах, которые сейчас отключены или удалены, но при этом остаются в контенте записей и страниц. При выводе такого контента WordPress не может обработать шорткод, и он выводится как есть, например [old_shortcode], что выглядит некрасиво и сбивает с толку пользователей.

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

  • Избавиться от визуального мусора на сайте.
  • Улучшить скорость загрузки и рендеринга страниц.
  • Снизить вероятность конфликтов и ошибок PHP.
  • Облегчить поддержку и развитие сайта.

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

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

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

Самый простой способ — использовать SQL-запрос к базе данных. Например, чтобы найти все записи, содержащие шорткоды, можно выполнить такой запрос в phpMyAdmin или через WP-CLI:

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

Этот запрос показывает все записи, где встречаются символы [ и ], то есть потенциально содержащие шорткоды.

Однако это лишь первый шаг, дальше нужно распарсить контент и выявить конкретные шорткоды. Для этого можно написать PHP-скрипт, который использует функцию has_shortcode():

function wpkit_find_all_shortcodes() {
    global $wpdb;
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type IN ('post','page') AND post_status = 'publish'");
    $shortcodes_found = [];
    foreach ($posts as $post) {
        preg_match_all('/\[([^\]\s]+)(\s[^\]]*)?\]/', $post->post_content, $matches);
        if (!empty($matches[1])) {
            foreach ($matches[1] as $shortcode) {
                if (!isset($shortcodes_found[$shortcode])) {
                    $shortcodes_found[$shortcode] = [];
                }
                $shortcodes_found[$shortcode][] = $post->ID;
            }
        }
    }
    return $shortcodes_found;
}

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

Проверка зарегистрированных шорткодов

Чтобы понять, какие шорткоды сейчас зарегистрированы в системе, используйте функцию shortcode_exists() или получите все через глобальный массив:

global $shortcode_tags;
print_r(array_keys($shortcode_tags));

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

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

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

Использование плагина WP Shortcode Remover

Плагин WP Shortcode Remover позволяет автоматически убрать неработающие шорткоды из контента. Плагин сканирует записи и заменяет нераспознанные шорткоды на пустую строку или другой текст.

Просто установите и активируйте плагин, настройте параметры удаления и запустите процесс.

Ручное удаление через PHP-скрипт

Если хотите больше контроля, можно написать функцию, которая удалит указанные шорткоды из базы данных:

function wpkit_remove_shortcode_from_posts($shortcode) {
    global $wpdb;
    $pattern = '\\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\\]';
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%['$shortcode'%'");
    foreach ($posts as $post) {
        $new_content = preg_replace('/' . $pattern . '/', '', $post->post_content);
        if ($new_content !== $post->post_content) {
            $wpdb->update(
                $wpdb->posts,
                ['post_content' => $new_content],
                ['ID' => $post->ID]
            );
        }
    }
}

// Пример вызова функции для удаления шорткода [old_shortcode]
wpkit_remove_shortcode_from_posts('old_shortcode');

Этот скрипт ищет и удаляет все вхождения конкретного шорткода в контенте записей и страниц.

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

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

  • Перед удалением плагина или темы, отключите связанные шорткоды и замените их в контенте.
  • Используйте кастомные поля или блоки Gutenberg вместо шорткодов, если это возможно — так легче управлять содержимым.
  • Регулярно проверяйте базу данных на наличие нераспознанных шорткодов.
  • Для сложных проектов создавайте централизованный реестр шорткодов, чтобы быстро видеть их статус.

Заключение

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

Как добавить уникальные типы записей в WordPress с применением кода
12.01.2026
Как добавить атрибуты в CSS-классы WordPress без плагинов
03.02.2026
Автоматическое создание резервных копий WordPress без плагинов
23.03.2026
Как отключить AJAX-подгрузку в WooCommerce без плагинов
27.05.2026
Как использовать хуки WordPress для изменения функционала сайта
08.12.2025