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

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

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

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

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

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

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

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

1. Поиск вручную через базу данных

Если у вас есть доступ к базе данных через phpMyAdmin или аналог, выполните SQL-запрос для поиска всех шорткодов в таблице с контентом:

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

Данный запрос покажет все записи, где встречаются шорткоды (они имеют вид [something]). Можно дополнительно фильтровать по названию конкретного шорткода, например:

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

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

2. Использование плагина для поиска шорткодов

Для удобства можно использовать плагины, которые сканируют контент на наличие шорткодов. Например, Shortcode Cleaner или Clearfy Pro (с расширенными функциями оптимизации).

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

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

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

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

function wpmanual_remove_unused_shortcodes() {
    global $wpdb;
    
    // Перечислите шорткоды, которые хотите удалить
    $unused_shortcodes = array('old_shortcode', 'deprecated_code', 'test_shortcode');
    
    foreach ($unused_shortcodes as $shortcode) {
        // Формируем регулярное выражение для поиска шорткода в формате [shortcode ...]...[/shortcode]
        $pattern = '\\[' . $shortcode . '(\\s[^\\]]*)?\\](.*?)\\[/' . $shortcode . '\\]';
        $pattern_self_closing = '\\[' . $shortcode . '(\\s[^\\]]*)?\\/\\]';
        
        // Обновляем записи, удаляя шорткод
        $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%[{$shortcode}%' AND post_status IN ('publish', 'draft', 'pending')");
        
        foreach ($posts as $post) {
            $content = $post->post_content;
            $content = preg_replace('/' . $pattern . '/si', '', $content);
            $content = preg_replace('/' . $pattern_self_closing . '/si', '', $content);
            
            if ($content !== $post->post_content) {
                $wpdb->update(
                    $wpdb->posts,
                    array('post_content' => $content),
                    array('ID' => $post->ID)
                );
            }
        }
    }
}
// Запуск функции один раз, например, через wp-cli или хук admin_init
// add_action('admin_init', 'wpmanual_remove_unused_shortcodes');

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

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

Если шорткод больше не нужен, его обработчик нужно деактивировать, чтобы избежать ошибок.

Удаление регистрации шорткода

В коде темы или плагина найдите место, где подключается шорткод, например:

add_shortcode('old_shortcode', 'old_shortcode_handler');

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

remove_shortcode('old_shortcode');

Рекомендуется сделать это в хуке init после регистрации всех шорткодов, например:

function wpmanual_disable_old_shortcodes() {
    remove_shortcode('old_shortcode');
    remove_shortcode('deprecated_code');
}
add_action('init', 'wpmanual_disable_old_shortcodes', 20);

Использование плагина Clearfy Pro для автоматической очистки шорткодов

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

В Clearfy Pro есть функция для поиска и удаления неиспользуемых шорткодов и удаления их из базы данных. Это особенно удобно для сайтов с большим объёмом контента.

Дополнительные рекомендации по работе с шорткодами

  • Перед удалением шорткодов обязательно сделайте резервную копию базы данных.
  • Проверьте страницы и записи с удалёнными шорткодами на корректность отображения.
  • Если шорткод был связан с функционалом плагина, убедитесь, что плагин полностью отключён и удалён.
  • Для новых проектов используйте кастомные шорткоды с уникальными префиксами, чтобы избежать конфликтов.
  • Регулярно проверяйте сайт на наличие «мертвых» шорткодов, особенно после обновлений тем и плагинов.
Как создать собственный шорткод в WordPress
06.11.2025
WooCommerce: не отображаются товары после обновления — как быстро исправить
20.05.2026
WooCommerce: как отключить автоматическое обновление строк заказов для снижения нагрузки
04.06.2026
Как автоматически отслеживать изменения в записях WordPress
24.02.2026
Как удалить пустые мета-поля в WordPress с помощью кода
12.03.2026