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

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

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

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

  • Загромождать базу данных, увеличивая размер контента.
  • Вызывать конфликты с другими плагинами или темами.
  • Негативно влиять на SEO из-за наличия мусорного кода.

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

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

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

Использование плагина Shortcode Cleaner Lite

Плагин Shortcode Cleaner Lite позволяет легко найти и удалить неиспользуемые шорткоды. Он анализирует весь контент и показывает, какие шорткоды не зарегистрированы в текущей установке WP.

После установки и активации перейдите в Инструменты > Shortcode Cleaner и запустите сканирование. Плагин выдаст список неиспользуемых шорткодов и позволит удалить их.

Поиск через SQL-запросы

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

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

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

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

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

function wpma_remove_unused_shortcodes() {
    global $wpdb;
    // Список зарегистрированных шорткодов
    $registered_shortcodes = array_keys($GLOBALS['shortcode_tags']);

    // Получаем все шорткоды из базы (предположим, что у нас список известных)
    $all_shortcodes = array('oldshortcode1', 'oldshortcode2', 'example_shortcode');

    // Вычисляем неиспользуемые
    $unused_shortcodes = array_diff($all_shortcodes, $registered_shortcodes);

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

    foreach ($unused_shortcodes as $shortcode) {
        // Экранируем для поиска
        $pattern = '\\[' . preg_quote($shortcode, '/') . '(\s[^\\]]*)?\\]';
        // Обновляем контент, удаляя шорткод из записей
        $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('/' . $pattern . '/i', '', $post->post_content);
            if ($new_content !== $post->post_content) {
                wp_update_post(array(
                    'ID' => $post->ID,
                    'post_content' => $new_content
                ));
            }
        }
    }
    return 'Удаление неиспользуемых шорткодов завершено';
}

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

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

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

  • Перед удалением плагина, который добавляет шорткоды, сначала удаляйте все записи с его шорткодами.
  • Используйте плагин Clearfy Pro (подробнее на WPSHOP), который помогает очищать базу и управлять шорткодами.
  • Проверяйте контент при миграции сайта с помощью поиска по шорткодам.

Пример обработки шорткодов с параметрами и вложенными тегами

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

[example_shortcode id="123" class="test"]Текст внутри[/example_shortcode]

Чтобы корректно удалять такие конструкции, в регулярном выражении нужно учитывать закрывающий тег:

$pattern = '\\[' . preg_quote($shortcode, '/') . '(\s[^\\]]*)?\\](.*?)\\[\\/' . preg_quote($shortcode, '/') . '\\]';

Используйте preg_replace с модификатором s для удаления всего блока.

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

Автоматизация удаления неиспользуемых шорткодов — задача, требующая аккуратности и тестирования. Я рекомендую сначала создать резервную копию базы, использовать плагин Shortcode Cleaner Lite для первичного анализа, а затем — кастомный код для массовой очистки. Если хотите повысить эффективность и удобство, обратите внимание на продукты WPSHOP, которые помогают управлять функционалом и оптимизировать сайт.

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

WooCommerce: установка отзывов после покупки с автоподтверждением
20.04.2026
WooCommerce: автоматическое отключение способов оплаты при неподтверждённых заказах
14.06.2026
Как удалить или отключить плагин на определённых страницах WordPress
19.03.2026
WooCommerce: как автоматически удалять неподтверждённые заказы
07.06.2026
Как установить автоматический редирект после изменения слага в WordPress
20.12.2025