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

|

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

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

Когда WordPress встречает незарегистрированный шорткод, он выводит его имя в квадратных скобках — например, [old_shortcode]. Это портит внешний вид страниц и снижает качество пользовательского опыта. Кроме того, обработка лишних шорткодов влияет на производительность сайта, особенно если таких шорткодов много.

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

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

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

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

Все шорткоды хранятся в глобальном массиве $shortcode_tags. Выведем их список для анализа:

function wpdetect_list_shortcodes() {
    global $shortcode_tags;
    echo '<pre>';
    print_r(array_keys($shortcode_tags));
    echo '</pre>';
}
add_action('admin_notices', 'wpdetect_list_shortcodes');

Этот код выведет список всех зарегистрированных шорткодов в админке на странице любого раздела.

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

Найдём все записи, где используется конкретный шорткод. Например, для шорткода [example_shortcode]:

function wpdetect_find_shortcode_usage($shortcode) {
    global $wpdb;
    $like = '%[' . $wpdb->esc_like($shortcode) . '%';
    $query = $wpdb->prepare("SELECT ID, post_title FROM {$wpdb->posts} WHERE post_content LIKE %s AND post_status = 'publish'", $like);
    return $wpdb->get_results($query);
}

// Использование
$posts = wpdetect_find_shortcode_usage('example_shortcode');
if (!empty($posts)) {
    foreach ($posts as $post) {
        echo 'Пост: ' . esc_html($post->post_title) . ' (ID: ' . intval($post->ID) . ')<br>';
    }
} else {
    echo 'Шорткод не используется в опубликованных записях.';
}

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

Чтобы не плодить ошибки и не выводить неиспользуемые шорткоды, можно автоматически отключать их, если они не встречаются в контенте. Ниже пример реализации с использованием фильтра the_content.

function wpdetect_disable_unused_shortcodes($content) {
    global $shortcode_tags;
    $used_shortcodes = [];
    
    // Получаем все шорткоды из контента
    preg_match_all('/\[([a-zA-Z0-9_-]+)(\s|\])/', $content, $matches);
    if (!empty($matches[1])) {
        $used_shortcodes = array_unique($matches[1]);
    }

    foreach ($shortcode_tags as $tag => $func) {
        if (!in_array($tag, $used_shortcodes)) {
            // Отключаем шорткод, регистрируя пустую функцию
            remove_shortcode($tag);
            add_shortcode($tag, function() { return ''; });
        }
    }
    return $content;
}
add_filter('the_content', 'wpdetect_disable_unused_shortcodes', 5);

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

Применение плагинов для управления шорткодами

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

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

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

Регулярный аудит контента

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

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

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

Удаление шорткодов вместе с плагинами

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

Заключение

Автоматическое отключение неиспользуемых шорткодов помогает поддерживать чистоту и производительность сайта WordPress. Используя приведённые методы и примеры, вы сможете легко выявлять и отключать ненужные шорткоды, избегая ошибок и ухудшения пользовательского опыта. Комбинируйте кастомные решения с проверенными плагинами, например, Clearfy Pro, чтобы получить максимальный эффект и удобство в управлении вашим сайтом.

Как использовать WP-CLI для автоматизации задач в WordPress
19.01.2026
Как автоматизировать удаление старых заказов в WooCommerce по дате и статусу
03.03.2026
Как автоматизировать отключение неиспользуемых плагинов WordPress
04.02.2026
Как автоматизировать обновление подсказок в WordPress: практическое руководство
19.02.2026
Как отследить и решить проблемы с замедлением WordPress
18.03.2026
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

на премиум плагин WordPress

Получить скидку ⋙