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

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

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

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

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

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

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

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

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

function wordpressy_get_registered_shortcodes() {
    global $shortcode_tags;
    return array_keys($shortcode_tags);
}

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

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

function wordpressy_is_shortcode_used($shortcode) {
    global $wpdb;
    $like = '%[' . $wpdb->esc_like($shortcode) . '%';
    $query = $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s", $like);
    return $wpdb->get_var($query) > 0;
}

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

Поиск в виджетах и метаданных

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

function wordpressy_search_shortcode_in_widgets($shortcode) {
    global $wpdb;
    $like = '%[' . $wpdb->esc_like($shortcode) . '%';
    $query = $wpdb->prepare("SELECT option_name FROM {$wpdb->options} WHERE option_value LIKE %s", $like);
    return $wpdb->get_results($query);
}

Для метаданных постов и пользователей можно аналогично искать по таблицам wp_postmeta и wp_usermeta.

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

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

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

function wordpressy_remove_shortcode_from_content($shortcode) {
    global $wpdb;
    $like = '%[' . $wpdb->esc_like($shortcode) . '%';
    $posts = $wpdb->get_results($wpdb->prepare(
        "SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE %s", $like
    ));

    foreach ($posts as $post) {
        $pattern = get_shortcode_regex(array($shortcode));
        $new_content = preg_replace('/' . $pattern . '/s', '', $post->post_content);
        if ($new_content !== $post->post_content) {
            $wpdb->update(
                $wpdb->posts,
                array('post_content' => $new_content),
                array('ID' => $post->ID)
            );
        }
    }
}

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

Удаление шорткодов из виджетов и опций

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

function wordpressy_remove_shortcode_from_widgets($shortcode) {
    global $wpdb;
    $like = '%[' . $wpdb->esc_like($shortcode) . '%';
    $options = $wpdb->get_results($wpdb->prepare(
        "SELECT option_name, option_value FROM {$wpdb->options} WHERE option_value LIKE %s", $like
    ));

    foreach ($options as $option) {
        $new_value = preg_replace('/\[' . preg_quote($shortcode, '/') . '[^\]]*\]/', '', $option->option_value);
        if ($new_value !== $option->option_value) {
            update_option($option->option_name, $new_value);
        }
    }
}

Как отключить шорткод, не удаляя контент

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

Пример отключения шорткода:

function wordpressy_disable_shortcode($shortcode) {
    remove_shortcode($shortcode);
    add_shortcode($shortcode, function() { return ''; });
}

Это позволит избежать вывода [shortcode_name] в тексте, сохранив исходный контент.

Автоматизация и использование плагинов для очистки шорткодов

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

Также полезен плагин Shortcode Cleaner — он помогает находить и удалять ненужные шорткоды из контента и виджетов.

Но всегда перед такими операциями делайте резервные копии базы данных и проверяйте сайт после изменений.

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

  • Сначала получите список всех зарегистрированных шорткодов с помощью $shortcode_tags.
  • Проверьте использование каждого шорткода в контенте и опциях базы данных.
  • Используйте функции для безопасного удаления шорткодов из записей, страниц и виджетов.
  • Если нужно, временно отключайте шорткод с помощью пустой функции-обработчика.
  • Рассмотрите использование плагинов Clearfy Pro или Shortcode Cleaner для автоматизации и упрощения задачи.
  • Обязательно делайте резервные копии перед любыми массовыми изменениями.

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

Как использовать WP REST API для автоматического обновления товаров WooCommerce
01.05.2026
Как удалить параметры URL в WordPress без влияния на SEO
04.03.2026
Как удалить неиспользуемые метаполя в WooCommerce и ускорить сайт
20.05.2026
Как автоматизировать обновление тем и плагинов в WordPress без рисков
05.02.2026
Автоматическое изменение стоимости товара в WooCommerce при изменении атрибутов
07.05.2026