wpclean.ru wordpress WPClean.ru

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

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

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

Шорткоды — это специальные метки в тексте, которые WordPress заменяет на динамический контент при отображении страницы. Например, [gallery] или [contact-form]. После удаления плагина или темы, которые их реализуют, шорткоды перестают распознаваться, и на сайте могут появляться их необработанные записи, что портит внешний вид и снижает производительность.

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

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

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

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

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

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

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

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

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

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

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

function wpclean_remove_unused_shortcodes($content) {
    // Список неиспользуемых шорткодов
    $unused_shortcodes = ['old_shortcode', 'deprecated_shortcode'];
    
    foreach ($unused_shortcodes as $shortcode) {
        // Шаблон для поиска шорткода с атрибутами и без
        $pattern = '\\[' . $shortcode . '(\\s[^\\]]*)?\\](.*?)\\[\\/' . $shortcode . '\\]|\\[' . $shortcode . '(\\s[^\\]]*)?\\]';
        $content = preg_replace('/' . $pattern . '/s', '', $content);
    }
    return $content;
}
add_filter('the_content', 'wpclean_remove_unused_shortcodes');

Эта функция удалит шорткоды [old_shortcode] и [deprecated_shortcode] из выводимого контента, не меняя записи в базе.

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

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

Пример PHP-скрипта для удаления шорткодов из всех записей:

function wpclean_remove_shortcode_from_db($shortcode) {
    global $wpdb;
    
    // Получаем все записи с данным шорткодом
    $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) {
        $pattern = '/\\[' . preg_quote($shortcode, '/') . '(\\s[^\\]]*)?\\](.*?)\\[\\/' . preg_quote($shortcode, '/') . '\\]|\\[' . preg_quote($shortcode, '/') . '(\\s[^\\]]*)?\\]/s';
        $new_content = preg_replace($pattern, '', $post->post_content);
        
        if ($new_content !== $post->post_content) {
            // Обновляем запись
            $wpdb->update(
                $wpdb->posts,
                ['post_content' => $new_content],
                ['ID' => $post->ID],
                ['%s'],
                ['%d']
            );
        }
    }
}

// Используем функцию для удаления шорткода 'old_shortcode'
wpclean_remove_shortcode_from_db('old_shortcode');

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

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

Хотя мы рассматриваем способы без плагинов, иногда удобнее использовать специализированные решения. Например:

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

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

Рекомендации по работе с шорткодами и оптимизации сайта

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

  • Перед удалением плагина отключайте шорткод через remove_shortcode();
  • Используйте функции типа wpclean_unregister_shortcode() для централизованного управления;
  • Регулярно проверяйте содержимое на наличие необработанных шорткодов;
  • Оптимизируйте контент и базу данных с помощью проверенных инструментов, например, Clearfy Pro.

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

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙