wpload.ru wordpress WPLoad.ru

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

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

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

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

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

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

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

Как определить, какие шорткоды не используются

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

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

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

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

/\[(\w+)(\s[^\]]*)?\]/

Эта регулярка найдёт все шорткоды вида [shortcode] или с атрибутами [shortcode attr="value"].

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

Ниже приводится пример функции, которая:

  • Получает все записи с контентом.
  • Ищет в них все шорткоды.
  • Сравнивает с зарегистрированными шорткодами.
  • Удаляет неиспользуемые из контента.
  • Обновляет записи с исправленным содержимым.
function wpload_remove_unused_shortcodes() {
    global $wpdb;

    $registered_shortcodes = wpload_get_registered_shortcodes();
    $pattern = '/\[(\w+)(\s[^\]]*)?\]/';

    // Получаем все посты с контентом
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type IN ('post', 'page')");
    
    foreach ($posts as $post) {
        preg_match_all($pattern, $post->post_content, $matches);
        $shortcodes_in_post = $matches[1];
        $content = $post->post_content;
        $updated = false;

        foreach ($shortcodes_in_post as $shortcode) {
            if (!in_array($shortcode, $registered_shortcodes)) {
                // Удаляем неиспользуемый шорткод
                $content = preg_replace('/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/', '', $content);
                $updated = true;
            }
        }

        if ($updated) {
            wp_update_post([
                'ID' => $post->ID,
                'post_content' => $content
            ]);
        }
    }
}

Эту функцию можно запускать вручную или добавить в WP-CLI команду для удобства. Также стоит делать резервные копии базы данных перед массовыми изменениями.

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

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

  • Shortcode Cleaner Lite — позволяет удалять неработающие шорткоды из контента.
  • Shortcodes Ultimate — мощный набор шорткодов с возможностью отключать ненужные.

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

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

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

  • Перед удалением плагина, который добавляет шорткоды, сначала удалите или замените шорткоды в контенте.
  • Используйте шорткоды с префиксами, уникальными для плагина или темы, чтобы легче было их идентифицировать.
  • Регулярно проверяйте базу данных на наличие незарегистрированных шорткодов с помощью SQL-запросов или скриптов.
  • Автоматизируйте очистку шорткодов с помощью задач WP-Cron или WP-CLI.

Пример SQL-запроса для поиска шорткодов в базе

SELECT ID, post_content FROM wp_posts WHERE post_content REGEXP '\[[a-zA-Z0-9_]+( [^\]]*)?\]';

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

Пример автоматизации через WP-Cron

function wpload_schedule_shortcode_cleanup() {
    if (!wp_next_scheduled('wpload_remove_unused_shortcodes_cron')) {
        wp_schedule_event(time(), 'daily', 'wpload_remove_unused_shortcodes_cron');
    }
}
add_action('wp', 'wpload_schedule_shortcode_cleanup');

add_action('wpload_remove_unused_shortcodes_cron', 'wpload_remove_unused_shortcodes');

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше