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

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

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

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

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

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

Автоматизация процесса позволяет быстро очистить весь сайт, особенно если много записей и страниц.

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

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

Использование плагина Clearfy Pro для автоматизации

Clearfy Pro — мощный плагин оптимизации, который умеет искать и удалять неиспользуемые шорткоды из контента. Он автоматически анализирует записи и очищает их.

Преимущества:

  • Простая настройка и запуск очистки.
  • Поддержка массовой обработки.
  • Дополнительные инструменты оптимизации сайта.

Недостаток — плагин платный, но для профессиональных сайтов это оправдано.

Ручной поиск через SQL и PHP-код

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

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

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

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

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

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

function wpdeveloper_remove_unused_shortcodes() {
    global $wpdb;
    // Получаем список всех зарегистрированных шорткодов
    $all_shortcodes = array_keys($GLOBALS['shortcode_tags']);
    
    // Для каждого шорткода проверяем, используется ли он в базе
    foreach ($all_shortcodes as $shortcode) {
        // Формируем SQL-запрос для поиска шорткода в контенте
        $like = '%[' . $wpdb->esc_like($shortcode) . '%';
        $count = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
            $like
        ));
        
        // Если шорткод нигде не используется, удаляем его регистрацию
        if (intval($count) === 0) {
            remove_shortcode($shortcode);
            error_log("wpdeveloper: Шорткод [{$shortcode}] удалён как неиспользуемый.");
        }
    }
}

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

Дополнение: массовое удаление устаревших шорткодов из контента

Для удаления шорткодов, которые больше не поддерживаются (например, после удаления плагина), можно применить такой код:

function wpdeveloper_strip_unused_shortcodes_from_posts($shortcodes_to_remove) {
    global $wpdb;
    
    foreach ($shortcodes_to_remove as $shortcode) {
        // Получаем ID записей с данным шорткодом
        $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, '/') . '[^\]]*\]/', '', $post->post_content);
            // Обновляем запись, если контент изменился
            if ($new_content !== $post->post_content) {
                wp_update_post(array(
                    'ID' => $post->ID,
                    'post_content' => $new_content
                ));
            }
        }
    }
}

Использование:

add_action('init', function() {
    // Список шорткодов для удаления из контента
    $shortcodes_to_remove = array('oldshortcode1', 'oldshortcode2');
    wpdeveloper_strip_unused_shortcodes_from_posts($shortcodes_to_remove);
});

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

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

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

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

Заключение

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

Если хотите углубиться в оптимизацию, обратите внимание на комплексные инструменты из WPShop.ru, где есть множество полезных плагинов для оптимизации и автоматизации WordPress.

Как использовать REST API для автоматического управления пользователями в WordPress
18.01.2026
Автоматическое удаление старых медиафайлов в WordPress
28.02.2026
Как добавить автоматическое создание резервных копий WordPress
13.12.2025
Автоматическое удаление неиспользуемых медиафайлов в WordPress
06.02.2026
Как удалить записи WordPress по владельцу: практическое руководство
09.12.2025