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

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

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

Когда вы удаляете плагин, который добавлял свои шорткоды, WordPress перестает распознавать эти шорткоды, и на сайте остаются их «сырой» вид — например, [example_shortcode]. Это не только портит внешний вид страниц, но и может вызвать ошибки при обработке контента. Также неиспользуемые шорткоды занимают место в базе данных и усложняют дальнейшую поддержку сайта.

Регулярное удаление таких шорткодов помогает:

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

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

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

Пример простого SQL-запроса для поиска шорткодов в таблице wp_posts:

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

Этот запрос найдет все записи с содержимым, в котором есть символы [ и ]. Однако он не различает, какие шорткоды активны, а какие нет.

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

function wpacademy_find_unused_shortcodes() {
    global $wpdb;
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish'");
    $registered = array_keys(shortcode_tags());
    $unused = [];

    foreach ($posts as $post) {
        preg_match_all('/\[(\w+)(\s|\])/', $post->post_content, $matches);
        foreach ($matches[1] as $shortcode) {
            if (!in_array($shortcode, $registered)) {
                $unused[$shortcode][] = $post->ID;
            }
        }
    }
    return $unused;
}

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

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

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

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

function wpacademy_remove_unused_shortcodes(array $shortcodes) {
    global $wpdb;
    foreach ($shortcodes as $shortcode => $post_ids) {
        foreach ($post_ids as $post_id) {
            $content = get_post_field('post_content', $post_id);
            // Удаляем шорткод и его содержимое
            $pattern = get_shortcode_regex(array($shortcode));
            $new_content = preg_replace('/' . $pattern . '/s', '', $content);
            if ($new_content !== $content) {
                wp_update_post(array('ID' => $post_id, 'post_content' => $new_content));
            }
        }
    }
}

Вызовите эту функцию так:

$unused = wpacademy_find_unused_shortcodes();
wpacademy_remove_unused_shortcodes($unused);

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

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

Если вы предпочитаете готовые решения, можно обратить внимание на следующие плагины:

  • Clearfy Pro — комплексный плагин для оптимизации WordPress, в том числе умеет обнаруживать и удалять неиспользуемые шорткоды. Подробнее: https://wpshop.ru/clearfy-pro/
  • Shortcoder — позволяет управлять шорткодами и быстро редактировать их, что помогает избежать «мусора».
  • Better Search Replace — плагин для массового поиска и замены в базе данных, можно использовать для удаления шорткодов вручную.

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

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

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

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

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

Итоговые рекомендации и полезные советы

Автоматизация удаления неиспользуемых шорткодов помогает поддерживать сайт в чистоте и порядке. Основные шаги:

  • Определить неиспользуемые шорткоды с помощью PHP-функции и/или SQL-запросов.
  • Удалить их из контента через программный код или специализированные плагины.
  • Обязательно создавать резервные копии перед выполнением изменений.
  • Проверять сайт после удаления на предмет ошибок и некорректного отображения.

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

Удаление неиспользуемых таблиц в базе данных WordPress: безопасный метод
23.01.2026
Как создать собственный виджет в WordPress: подробное руководство
30.11.2025
Как добавить автоматическое удаление старых записей через PHP в WordPress
17.03.2026
Как добавить поддержку WebP в WordPress без плагинов для оптимизации сайта
07.04.2026
Как удалить пустые категории в WordPress с помощью кода
21.03.2026