Как удалить ненужные shortcode из контента WordPress

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

Почему появляются ненужные shortcode в WordPress

Причины появления лишних шорткодов бывают разными:

  • Удаление плагина или темы, которые добавляли шорткод, но контент с ними остался;
  • Ошибки при создании или обновлении шорткодов, приводящие к некорректному выводу;
  • Эксперименты с контентом, когда некоторые шорткоды перестали быть актуальными;
  • Миграции и импорт данных из других сайтов с неподдерживаемыми shortcode.

В таких случаях на страницах и записях появляются необработанные конструкции вида [example_shortcode], которые портят внешний вид и снижают удобочитаемость.

Основные способы удаления шорткодов из контента WordPress

Удалить шорткод можно несколькими способами:

  1. Через базу данных — поиск и замена в wp_posts;
  2. Через фильтр the_content — программное удаление на лету;
  3. Используя плагин — специализированные инструменты для очистки;
  4. Редактирование вручную — с помощью поиска по записям в админке.

Рассмотрим каждый способ подробнее с примерами.

Удаление шорткодов через запросы в базе данных

Если нужно массово удалить определённый шорткод из всех записей, самый быстрый способ — SQL-запрос. Предположим, нужно удалить шорткод [oldshortcode] из поля post_content таблицы wp_posts. Запрос будет таким:

UPDATE wp_posts SET post_content = REPLACE(post_content, '[oldshortcode]', '') WHERE post_content LIKE '%[oldshortcode]%';

Если шорткод с параметрами, можно использовать регулярные выражения в MySQL 8+ или экспортировать контент для обработки скриптом. Будьте осторожны: всегда делайте бэкап базы перед такими операциями!

Удаление шорткодов программно через фильтр the_content

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

function wpskills_remove_oldshortcode($content) {
    // Удаляем все вхождения [oldshortcode] и его закрывающего варианта
    $pattern = '/\[oldshortcode.*?\](.*?)\[\/oldshortcode\]/s';
    $content = preg_replace($pattern, '', $content);
    // Удаляем одиночные шорткоды [oldshortcode param="value"]
    $pattern_single = '/\[oldshortcode[^\]]*\]/';
    $content = preg_replace($pattern_single, '', $content);
    return $content;
}
add_filter('the_content', 'wpskills_remove_oldshortcode');

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

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

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

  • Shortcode Cleaner — удаляет неиспользуемые шорткоды из контента;
  • Clearfy Pro — мощный оптимизатор с функцией удаления лишних шорткодов;
  • Плагины для массового поиска и замены по базе (например, Better Search Replace), в которых можно найти и удалить конкретные шорткоды.

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

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

Перед удалением важно:

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

Также полезно написать функцию, которая предупредит вас о вхождениях шорткода. Например:

function wpskills_find_oldshortcode_posts() {
    $args = [
        's' => '[oldshortcode',
        'post_type' => 'any',
        'posts_per_page' => 100,
    ];
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            echo 'Найден шорткод в посте: ' . get_the_title() . '\n';
        }
    } else {
        echo 'Шорткод не найден в постах';
    }
    wp_reset_postdata();
}

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

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

Если нужно удалить сразу несколько шорткодов, можно расширить функцию удаления:

function wpskills_remove_multiple_shortcodes($content) {
    $shortcodes = ['oldshortcode', 'unusedcode', 'testshortcode'];
    foreach ($shortcodes as $shortcode) {
        // Удаляем закрывающиеся и одиночные варианты
        $pattern = '/\[' . $shortcode . '.*?\](.*?)\[\/' . $shortcode . '\]/s';
        $content = preg_replace($pattern, '', $content);
        $pattern_single = '/\[' . $shortcode . '[^\]]*\]/';
        $content = preg_replace($pattern_single, '', $content);
    }
    return $content;
}
add_filter('the_content', 'wpskills_remove_multiple_shortcodes');

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

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

Шорткоды могут встречаться не только в тексте постов, но и в метаполях. Чтобы очистить и их, можно применить похожие методы, перебирая метаданные через get_post_meta и обновляя через update_post_meta.

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

function wpskills_clean_shortcode_in_meta($post_id, $meta_key, $shortcode) {
    $content = get_post_meta($post_id, $meta_key, true);
    if (strpos($content, '[' . $shortcode) !== false) {
        $pattern = '/\[' . $shortcode . '.*?\](.*?)\[\/' . $shortcode . '\]/s';
        $content = preg_replace($pattern, '', $content);
        $pattern_single = '/\[' . $shortcode . '[^\]]*\]/';
        $content = preg_replace($pattern_single, '', $content);
        update_post_meta($post_id, $meta_key, $content);
    }
}

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

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

Удаление ненужных шорткодов — важный этап поддержания чистоты и производительности сайта. Выбирайте метод, исходя из задачи и технических возможностей сайта. Если не уверены, используйте фильтр the_content для динамического удаления. Для массовых операций — SQL-запросы с бэкапами. Плагины типа Clearfy Pro помогут автоматизировать и упростить задачу.

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

Как удалить избитые шорткоды в WordPress: практические методы и примеры кода
11.03.2026
Как изменить время хранения кеша в WordPress
04.02.2026
Оптимизация запросов WordPress с помощью фильтра pre_get_posts
28.04.2026
Создание и использование shortcode в WordPress: практические примеры и советы
25.11.2025
Как удалить атрибут title из изображений в WordPress
01.02.2026