WPExperts

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

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

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

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

  • Улучшить читаемость контента без лишних элементов вида [old_shortcode];
  • Снизить нагрузку на парсер контента WordPress;
  • Избежать конфликтов с новыми плагинами и темами;
  • Облегчить сопровождение и развитие сайта.

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

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

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

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

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

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

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

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

function wpexperts_find_all_shortcodes() {
    global $wpdb;
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish'");
    $shortcodes = [];
    $pattern = '/\[(\w+)(\s|\])/' ;
    foreach ($posts as $post) {
        if (preg_match_all($pattern, $post->post_content, $matches)) {
            foreach ($matches[1] as $shortcode) {
                $shortcodes[$shortcode][] = $post->ID;
            }
        }
    }
    return $shortcodes;
}

Эта функция вернёт массив, где ключ — название шорткода, а значение — массив ID постов, где этот шорткод используется. По этому списку можно понять, какие шорткоды реально применяются.

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

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

Пример удаления шорткода old_shortcode:

function wpexperts_remove_unused_shortcode() {
    remove_shortcode('old_shortcode');
}
add_action('init', 'wpexperts_remove_unused_shortcode');

Важно сделать это на этапе init, чтобы WordPress не пытался обработать старые шорткоды в контенте.

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

Если на сайте остались записи с нераспознанными шорткодами, они будут выводиться в виде текста [old_shortcode], что портит внешний вид. Чтобы удалить такие шорткоды из контента без ручного редактирования каждой записи, можно использовать фильтр the_content.

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

function wpexperts_strip_unknown_shortcodes($content) {
    // Получаем список всех зарегистрированных шорткодов
    global $shortcode_tags;
    
    // Шорткоды, которые встречаются в контенте
    preg_match_all('/\[(\w+)(\s|\])/', $content, $matches);
    
    if (empty($matches[1])) {
        return $content;
    }

    foreach ($matches[1] as $shortcode) {
        if (!isset($shortcode_tags[$shortcode])) {
            // Удаляем нераспознанный шорткод из контента
            $pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/';
            $content = preg_replace($pattern, '', $content);
        }
    }
    return $content;
}
add_filter('the_content', 'wpexperts_strip_unknown_shortcodes');

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

Пример массового удаления шорткодов из базы

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

function wpexperts_remove_shortcode_from_posts($shortcode) {
    $args = [
        'post_type' => 'any',
        'posts_per_page' => -1,
        's' => '[' . $shortcode,
        'post_status' => 'publish',
    ];

    $query = new WP_Query($args);

    if (!$query->have_posts()) {
        return;
    }

    while ($query->have_posts()) {
        $query->the_post();
        $content = get_the_content();
        $pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/';
        $new_content = preg_replace($pattern, '', $content);

        if ($new_content !== $content) {
            wp_update_post([
                'ID' => get_the_ID(),
                'post_content' => $new_content,
            ]);
        }
    }
    wp_reset_postdata();
}

Вызовите функцию wpexperts_remove_shortcode_from_posts('old_shortcode'); для удаления конкретного шорткода из всех записей.

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

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

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

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

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

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

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

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее