В процессе развития сайта на WordPress часто накапливаются шорткоды, которые уже не используются. Они могут остаться после удаления плагинов или тем, либо из-за изменений в структуре сайта. Такие неиспользуемые шорткоды создают мусор в базе данных и могут негативно влиять на производительность и отображение страниц. В этой статье мы подробно разберём, как найти и удалить неиспользуемые шорткоды в WordPress, используя как плагины, так и кастомный код.
Почему важно удалять неиспользуемые шорткоды
Шорткоды — мощный инструмент для добавления динамического контента в записи и страницы WordPress. Однако, когда плагин, добавлявший шорткод, деактивируется или удаляется, то шорткод остаётся в тексте, но уже не работает. В результате на сайте появляются уродливые тексты вида [old_shortcode], что портит внешний вид и может сбивать с толку посетителей и поисковые системы.
Кроме визуальной проблемы, неработающие шорткоды затрудняют поддержку сайта и создают лишнюю нагрузку при обработке контента. Особенно если таких шорткодов много — это может замедлять загрузку страниц.
Регулярное удаление неиспользуемых шорткодов помогает:
- Улучшить пользовательский опыт за счёт чистого и корректного контента.
- Оптимизировать работу сайта, снизить нагрузку.
- Поддерживать порядок в базе данных и в коде.
Как найти неиспользуемые шорткоды: инструменты и методы
Первым шагом является поиск всех шорткодов, которые остались в содержимом сайта, но не обрабатываются активными плагинами или темой.
Поиск через базу данных
Вы можете сделать поиск по базе данных напрямую, используя SQL-запросы к таблице wp_posts, где хранятся все записи и страницы:
SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%[%]%';Этот запрос вернёт все записи, где есть шорткоды в содержимом (шорткод всегда окружён квадратными скобками). Далее нужно вручную проанализировать, какие из них не обрабатываются.
Использование плагинов для поиска шорткодов
Существуют плагины, которые помогают найти и отобразить шорткоды в содержимом:
- Shortcode Finder — позволяет просканировать все записи и вывести список всех шорткодов.
- Shortcodes Cleaner — помогает удалить неиспользуемые шорткоды и заменить их на пустоту или альтернативный текст.
Эти инструменты упрощают задачу, особенно если сайт большой.
Как удалить неиспользуемые шорткоды без плагинов: пример кода
Если вы хотите сделать это программно, можно написать функцию, которая найдет и удалит неработающие шорткоды из контента записей и страниц.
Ниже пример такой функции с приставкой wp24_:
function wp24_remove_unused_shortcodes() {
global $wpdb;
// Получаем список всех зарегистрированных шорткодов
$registered_shortcodes = array_keys($GLOBALS['shortcode_tags']);
// Ищем все записи с шорткодами
$posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%[%]%'");
foreach ($posts as $post) {
$content = $post->post_content;
// Поиск всех шорткодов в записи
preg_match_all('/\[(\w+)[^\]]*\]/', $content, $matches);
if (!empty($matches[1])) {
$to_remove = array_diff($matches[1], $registered_shortcodes);
foreach ($to_remove as $shortcode) {
// Удаляем шорткод из контента
$pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\](?:.*?\[\/' . preg_quote($shortcode, '/') . '\])?/s';
$content = preg_replace($pattern, '', $content);
}
// Обновляем запись, если что-то изменилось
if ($content !== $post->post_content) {
$wpdb->update(
$wpdb->posts,
['post_content' => $content],
['ID' => $post->ID]
);
}
}
}
}
// Запускаем функцию один раз, например, через admin_init
add_action('admin_init', 'wp24_remove_unused_shortcodes');Этот код:
- Получает список всех зарегистрированных шорткодов.
- Сканирует все записи с содержимым, содержащим квадратные скобки.
- Определяет шорткоды, которые не зарегистрированы (т.е. не используются).
- Удаляет их из содержимого и обновляет записи.
Внимание! Перед применением такого кода обязательно сделайте резервную копию базы данных, чтобы избежать потери данных.
Автоматизация очистки с WP-Cron и пример использования WP24
Чтобы регулярно очищать сайт от старых и неиспользуемых шорткодов, можно настроить автоматический запуск функции с помощью WP-Cron:
function wp24_schedule_shortcode_cleanup() {
if (!wp_next_scheduled('wp24_shortcode_cleanup_event')) {
wp_schedule_event(time(), 'daily', 'wp24_shortcode_cleanup_event');
}
}
add_action('wp', 'wp24_schedule_shortcode_cleanup');
add_action('wp24_shortcode_cleanup_event', 'wp24_remove_unused_shortcodes');Этот код задаёт ежедневный запуск очистки шорткодов. При большом количестве записей можно адаптировать функцию, чтобы она обрабатывала данные порциями для снижения нагрузки.
Использование плагина Clearfy Pro для управления шорткодами
Если вы предпочитаете готовое решение, обратите внимание на плагин Clearfy Pro, который предлагает расширенные возможности по оптимизации и очистке сайта. В числе функций есть удобный инструмент для поиска и удаления неиспользуемых шорткодов без необходимости писать код.
Clearfy Pro позволяет:
- Автоматически находить и удалять неиспользуемые шорткоды.
- Оптимизировать базу данных и кеш сайта.
- Управлять другими аспектами производительности и безопасности.
Заключение
Удаление неиспользуемых шорткодов — важный шаг в поддержке чистоты и производительности сайта WordPress. Используйте как ручной поиск, так и автоматизированные методы с помощью кода или плагинов. Обязательно делайте резервные копии перед изменениями.
Приведённые примеры кода и рекомендации помогут вам быстро и эффективно справиться с задачей, поддерживая ваш сайт в идеальном состоянии.