Шорткоды — мощный инструмент 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);
Этот код проверяет контент на наличие каждого зарегистрированного шорткода. Если шорткод в тексте не встречается, он отключается, и вместо вывода его имени будет пустая строка.
Применение плагинов для управления шорткодами
Если вы предпочитаете готовые решения, существуют плагины, которые помогают управлять шорткодами:
- Shortcode Cleaner Lite — автоматически удаляет неиспользуемые и неработающие шорткоды из контента.
- Shortcode Manager — позволяет видеть список всех шорткодов, отключать и управлять ими через админку.
- Clearfy Pro от WPSHOP — включает опции для оптимизации и отключения неиспользуемых функций, в том числе шорткодов.
Эти плагины могут значительно упростить поддержку сайта, особенно если на нём много устаревших элементов.
Дополнительные советы по работе с шорткодами
Регулярный аудит контента
Периодически выполняйте поиск шорткодов в базе данных, чтобы выявлять устаревшие или лишние. Это поможет держать сайт в чистоте и порядке.
Использование кастомных функций для регистрации шорткодов
Рекомендуется регистрировать шорткоды через собственные функции с префиксом, например, wpdetect_register_shortcode_example, чтобы избежать конфликтов с другими плагинами.
Удаление шорткодов вместе с плагинами
При деактивации или удалении плагина, регистрирующего шорткод, убедитесь, что вы удалили все его вхождения из контента. Для этого можно использовать SQL-запросы или плагины для поиска и замены.
Заключение
Автоматическое отключение неиспользуемых шорткодов помогает поддерживать чистоту и производительность сайта WordPress. Используя приведённые методы и примеры, вы сможете легко выявлять и отключать ненужные шорткоды, избегая ошибок и ухудшения пользовательского опыта. Комбинируйте кастомные решения с проверенными плагинами, например, Clearfy Pro, чтобы получить максимальный эффект и удобство в управлении вашим сайтом.