wp-kurs.ru wordpress WP-Kurs

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

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

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

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

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

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

Неиспользуемые шорткоды могут находиться в:

  • Контенте записей и страниц
  • Виджетах, особенно текстовых
  • Шаблонах тем и плагинов
  • Файлах настроек плагинов, если шорткод прописывается вручную

Для поиска в базе данных можно использовать SQL-запросы с LIKE, например:

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

Для поиска в файлах проекта — команду grep или поиск через IDE, например:

grep -r '\[old_shortcode' .

Удаление шорткодов из контента — автоматизация через код

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

Пример функции wp_kurs_remove_unused_shortcodes():

function wp_kurs_remove_unused_shortcodes() {
    global $wpdb;
    $shortcodes_to_remove = array('old_shortcode', 'deprecated_shortcode');

    foreach ($shortcodes_to_remove as $shortcode) {
        // Ищем записи с данным шорткодом
        $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) {
            $content = $post->post_content;
            // Удаляем шорткод и его содержимое, если он парный
            $pattern = get_shortcode_regex(array($shortcode));
            $new_content = preg_replace('/' . $pattern . '/s', '', $content);

            if ($new_content !== $content) {
                // Обновляем содержимое записи
                $wpdb->update(
                    $wpdb->posts,
                    array('post_content' => $new_content),
                    array('ID' => $post->ID)
                );
            }
        }
    }
}

// Запускать функцию один раз через WP-CLI или временно подключать в functions.php

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

Удаление шорткодов из виджетов и других мест

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

Пример кода для очистки виджетов от шорткода:

function wp_kurs_clean_shortcodes_in_widgets() {
    global $wpdb;
    $option_name = 'widget_text';
    $widgets_serialized = $wpdb->get_var($wpdb->prepare("SELECT option_value FROM {$wpdb->options} WHERE option_name = %s", $option_name));
    $widgets = maybe_unserialize($widgets_serialized);

    if (!is_array($widgets)) return;

    $shortcodes_to_remove = array('old_shortcode');

    $pattern = get_shortcode_regex($shortcodes_to_remove);

    $changed = false;

    foreach ($widgets as $key => $widget) {
        if (isset($widget['text'])) {
            $new_text = preg_replace('/' . $pattern . '/s', '', $widget['text']);
            if ($new_text !== $widget['text']) {
                $widgets[$key]['text'] = $new_text;
                $changed = true;
            }
        }
    }

    if ($changed) {
        $wpdb->update(
            $wpdb->options,
            array('option_value' => maybe_serialize($widgets)),
            array('option_name' => $option_name)
        );
    }
}

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

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

  • Shortcode Cleaner — позволяет быстро найти и удалить неиспользуемые шорткоды из контента.
  • Clearfy Pro — комплексный плагин оптимизации, включая очистку от нежелательных шорткодов и других элементов.

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

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

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

  • Перед удалением плагина, который добавляет шорткод, удаляйте шорткод из контента.
  • Используйте централизованное управление шорткодами — например, свой плагин или тему, где можно быстро отключить шорткод, не оставляя «хвостов».
  • Регулярно проводите аудит контента и базы данных на предмет устаревших шорткодов.
  • Для новых проектов используйте современные конструкторы блоков (Gutenberg), чтобы минимизировать использование шорткодов.

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

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

Не забывайте делать резервные копии перед массовым изменением данных. Для дополнительной оптимизации можно использовать Clearfy Pro, который помогает не только с шорткодами, но и с другими аспектами ускорения и безопасности WordPress.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее