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

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

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

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

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

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

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

Для этого можно выполнить SQL-запрос к таблице wp_posts с поиском по содержимому:

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

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

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

function wptest_get_all_shortcodes() {
    global $wpdb;
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish'");
    $shortcodes = [];
    foreach ($posts as $post) {
        preg_match_all('/\[(\w+)(\s[^\]]*)?\]/', $post->post_content, $matches);
        if (!empty($matches[1])) {
            foreach ($matches[1] as $shortcode) {
                $shortcodes[$shortcode] = true;
            }
        }
    }
    return array_keys($shortcodes);
}

Вызов wptest_get_all_shortcodes() вернёт массив всех шорткодов, встречающихся в опубликованных постах.

Далее нам нужно сравнить этот список с зарегистрированными в WordPress шорткодами: shortcode_exists() не существует, но можно проверить через shortcode_exists() или функцию shortcode_exists из ядра, или проверить массив $shortcode_tags.

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

function wptest_get_unregistered_shortcodes($used_shortcodes) {
    global $shortcode_tags;
    $unregistered = [];
    foreach ($used_shortcodes as $sc) {
        if (!isset($shortcode_tags[$sc])) {
            $unregistered[] = $sc;
        }
    }
    return $unregistered;
}

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

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

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

  • Remove Orphan Shortcodes — плагин, который сканирует контент и удаляет шорткоды, не зарегистрированные в текущей установке. Позволяет выбирать, какие шорткоды удалять, а какие оставить.
  • Shortcode Cleaner Lite — плагин, который помогает быстро очистить контент от неработающих шорткодов, заменяя их пустой строкой или пользовательским текстом.

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

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

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

Важно: перед массовым изменением контента обязательно сделайте резервную копию базы данных.

function wptest_remove_unused_shortcodes() {
    global $wpdb;
    $used_shortcodes = wptest_get_all_shortcodes();
    $unregistered = wptest_get_unregistered_shortcodes($used_shortcodes);

    if (empty($unregistered)) {
        return 'Неиспользуемых шорткодов не найдено.';
    }

    foreach ($unregistered as $shortcode) {
        // Получаем посты с этим шорткодом
        $posts = $wpdb->get_results($wpdb->prepare(
            "SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE %s",
            '%' . $wpdb->esc_like('[' . $shortcode) . '%'
        ));

        foreach ($posts as $post) {
            $new_content = preg_replace('/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/', '', $post->post_content);
            $wpdb->update(
                $wpdb->posts,
                ['post_content' => $new_content],
                ['ID' => $post->ID]
            );
        }
    }
    return 'Удаление неиспользуемых шорткодов завершено.';
}

Эта функция проходит по всем найденным неиспользуемым шорткодам, ищет их в содержимом постов и удаляет. Для более сложных шорткодов с закрывающими тегами ([shortcode]...[/shortcode]) регулярное выражение необходимо расширять.

Удаление шорткодов с контентом между тегами

$pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\](.*?)\[\/' . preg_quote($shortcode, '/') . '\]/s';
$new_content = preg_replace($pattern, '', $post->post_content);

Это позволит удалить и содержимое, обёрнутое в шорткод.

Рекомендации по безопасности и резервному копированию

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

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

Выводы и практические советы

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

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

Как удалить неиспользуемые шорткоды в WordPress
18.01.2026
Как создать адаптивный шаблон WordPress с нуля
15.11.2025
Как автоматизировать создание резервных копий WordPress с помощью плагинов
25.12.2025
Как исправить ошибку 429 Too Many Requests в WordPress
06.12.2025
Автоматический импорт постов в WordPress: плагины и кастомные решения
05.01.2026