Шорткоды — мощный инструмент WordPress для динамического добавления контента в записи и страницы. Однако со временем на сайте могут накопиться неиспользуемые шорткоды, особенно после удаления плагинов или тем, которые их добавляли. Такие «мертвые» шорткоды часто отображаются на страницах в виде текста, портя внешний вид сайта и ухудшая пользовательский опыт. В этой статье мы разберем, как найти и удалить неиспользуемые шорткоды в WordPress, используя проверенные методы и примеры кода.
Почему важно удалять неиспользуемые шорткоды
Неиспользуемые шорткоды могут привести к нескольким проблемам:
- Визуальный мусор на сайте: Все нераспознанные шорткоды выводятся как текст, что выглядит некрасиво.
- Ошибки и конфликты: Иногда устаревшие шорткоды могут конфликтовать с текущими плагинами, вызывая ошибки.
- Нагрузка на сайт: WordPress пытается обработать все шорткоды, даже если они не нужны, что замедляет отдачу страниц.
Поэтому регулярная очистка и поддержка актуального списка шорткодов — хороший технический подход к обслуживанию сайта.
Как найти неиспользуемые шорткоды на сайте
Прежде чем удалять шорткоды, важно понять, какие именно из них не используются. Для этого можно применить несколько способов:
Поиск шорткодов через базу данных
Шорткоды обычно хранятся в контенте записей и страниц. Для поиска используйте SQL-запрос, который ищет в таблице wp_posts характерные шаблоны шорткодов, например:
SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%[shortcode_name%';Замените shortcode_name на имя конкретного шорткода. Если вы не знаете точных имен, можно искать все вхождения символа [, но это менее эффективно.
Плагин для поиска шорткодов
Существуют плагины, которые помогают выявлять все зарегистрированные шорткоды и показывают, где они используются. Например:
- Shortcode Cleaner Lite — автоматически удаляет нерабочие шорткоды из контента.
- Shortcodes Finder — позволяет искать и управлять шорткодами на сайте.
Использование таких плагинов экономит время и снижает риск случайных ошибок.
Программный способ сканирования контента
Если хочется автоматизировать задачу, можно написать собственный PHP-скрипт, который пройдет по всем записям и выявит неиспользуемые шорткоды. Например, функция wpweb_find_unused_shortcodes():
function wpweb_find_unused_shortcodes() {
global $wpdb;
$all_shortcodes = array_keys($GLOBALS['shortcode_tags']);
$posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type IN ('post','page')");
$used_shortcodes = [];
foreach ($posts as $post) {
foreach ($all_shortcodes as $shortcode) {
if (strpos($post->post_content, '[' . $shortcode) !== false) {
$used_shortcodes[$shortcode] = true;
}
}
}
$unused = array_diff($all_shortcodes, array_keys($used_shortcodes));
return $unused;
}Эта функция возвращает список зарегистрированных шорткодов, которые не используются в опубликованном контенте.
Удаление неиспользуемых шорткодов с помощью кода
Чтобы избавиться от нежелательных шорткодов, можно использовать несколько методов.
Метод 1: Отмена регистрации шорткода
Если вы уверены, что шорткод больше не нужен, можно удалить его регистрацию с помощью функции remove_shortcode(). Например:
function wpweb_unregister_unused_shortcodes() {
$unused_shortcodes = wpweb_find_unused_shortcodes();
foreach ($unused_shortcodes as $shortcode) {
remove_shortcode($shortcode);
}
}
add_action('init', 'wpweb_unregister_unused_shortcodes');Этот код удалит все шорткоды, которые не найдены в контенте, из глобального реестра WordPress, предотвращая их вывод.
Метод 2: Очистка контента от неработающих шорткодов
Если на сайте остались записи с «мертвыми» шорткодами, можно написать функцию для удаления их из текста, чтобы не отображалось их сырой код:
function wpweb_strip_unused_shortcodes($content) {
$unused_shortcodes = wpweb_find_unused_shortcodes();
foreach ($unused_shortcodes as $shortcode) {
$pattern = get_shortcode_regex(array($shortcode));
$content = preg_replace('/' . $pattern . '/s', '', $content);
}
return $content;
}
add_filter('the_content', 'wpweb_strip_unused_shortcodes');Эта функция найдет и удалит все неработающие шорткоды из выводимого контента без необходимости менять записи в базе.
Метод 3: Использование плагина Shortcode Cleaner Lite
Для тех, кто не хочет писать код или боится ошибок, рекомендую плагин Shortcode Cleaner Lite. Он автоматически удаляет или заменяет неработающие шорткоды на пустую строку или указанный текст. Это быстрый и безопасный способ очистить сайт.
Советы по поддержанию чистоты шорткодов в WordPress
Чтобы в будущем не накапливались неиспользуемые шорткоды, придерживайтесь следующих правил:
- Удаляйте плагины аккуратно: перед удалением плагина, который добавляет шорткоды, замените его вызовы в контенте или удалите их.
- Используйте дочерние темы: если шорткоды добавляются темой, лучше вынести их в дочернюю тему для удобства управления.
- Регулярно проверяйте сайт: раз в несколько месяцев сканируйте контент на наличие сломанных шорткодов.
- Документируйте шорткоды: ведите список всех используемых шорткодов и их назначение, чтобы быстро ориентироваться.
Заключение
Удаление неиспользуемых шорткодов — важный этап технического обслуживания сайта на WordPress. Это улучшает внешний вид, повышает производительность и снижает риск ошибок. В этой статье мы рассмотрели методы поиска и удаления таких шорткодов как вручную через базу, так и с помощью кода и плагинов. Применяйте эти подходы на wpweb.ru, чтобы поддерживать свой сайт в чистоте и порядке.