Что такое шорткоды в WordPress и почему важно удалять неиспользуемые
Шорткоды — это удобный способ добавлять динамический контент в страницы и записи WordPress без необходимости писать HTML или PHP-код. Однако со временем на сайте могут накопиться шорткоды, которые больше не используются. Они могут остаться после деактивации плагинов или изменений в теме. Такие «мертвые» шорткоды не только портят внешний вид сайта, показывая необработанные теги (например, [gallery]), но и могут замедлять загрузку страниц.
Удаление неиспользуемых шорткодов помогает сохранить чистоту контента, улучшить пользовательский опыт и повысить производительность сайта. В этой статье мы разберем, как найти и удалить неиспользуемые шорткоды, а также как автоматически очищать контент от старых шорткодов.
Как найти неиспользуемые шорткоды на сайте WordPress
Первый шаг — определить, какие шорткоды остались на сайте и где они используются. Для этого можно воспользоваться несколькими способами:
- Поиск по базе данных: в таблице
wp_postsможно искать записи с вхождением символа[, что обозначает начало шорткода. Например, через SQL-запрос:
SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%[%]%';Этот запрос вернет все записи, где встречаются шорткоды или похожие конструкции. Далее нужно вручную проверить, какие шорткоды встречаются и какие из них не актуальны.
<- Плагины для поиска шорткодов: например, плагин Shortcode Cleaner помогает найти и удалить неиспользуемые шорткоды из контента.
Но лучше всего — написать собственную функцию для поиска шорткодов в базе и анализа, какие из них зарегистрированы в системе.
Как программно проверить и удалить неиспользуемые шорткоды
WordPress хранит список зарегистрированных шорткодов в глобальной переменной $shortcode_tags. Задача — сравнить найденные в контенте шорткоды с зарегистрированными и удалить те, которых нет в этом списке.
Пример функции на PHP для wpmanager.ru, которая очищает контент от неактивных шорткодов:
function wpmanager_remove_unused_shortcodes($content) {
global $shortcode_tags;
// Регулярное выражение для поиска всех шорткодов в контенте
preg_match_all('/\[([a-zA-Z0-9_\-]+)(\s[^\]]*)?\]/', $content, $matches);
if (!empty($matches[1])) {
foreach ($matches[1] as $shortcode) {
if (!isset($shortcode_tags[$shortcode])) {
// Удаляем неиспользуемый шорткод из контента
$pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/';
$content = preg_replace($pattern, '', $content);
}
}
}
return $content;
}
// Хук для фильтрации контента
add_filter('the_content', 'wpmanager_remove_unused_shortcodes');Эта функция ищет все шорткоды в тексте записи, проверяет их наличие в зарегистрированных и удаляет те, что не зарегистрированы. Это позволяет автоматически очищать записи от «мертвых» шорткодов при выводе.
Лучшие плагины для управления и очистки шорткодов
Если не хочется писать код вручную, можно воспользоваться готовыми инструментами:
- Shortcode Cleaner Lite — простой плагин для поиска и удаления неиспользуемых шорткодов в записях и страницах.
- Remove Orphan Shortcodes — автоматически ищет и удаляет шорткоды, которые не зарегистрированы или остались после удаления плагинов.
- Better Search Replace — универсальный плагин для поиска и замены текста в базе данных, который можно использовать для массового удаления шорткодов.
Все эти плагины облегчают работу с наследием сайта и помогают поддерживать его в чистоте.
Как использовать Better Search Replace для удаления шорткодов
В плагине можно настроить поиск по базе данных по шаблону, например, по шорткоду [oldshortcode] и заменить его на пустую строку. Этот способ хорош для массовой очистки, но требует осторожности и резервного копирования базы.
Как избежать появления неиспользуемых шорткодов в будущем
Чтобы минимизировать появление проблем с шорткодами, рекомендуем придерживаться следующих правил:
- При удалении плагина, который добавляет шорткоды, предварительно удаляйте или заменяйте их в контенте.
- Используйте плагин или код для автоматической очистки контента при деактивации плагина с шорткодами.
- Документируйте используемые шорткоды и периодически проверяйте сайт на наличие «мертвых» шорткодов.
Например, можно добавить функцию, которая при деактивации плагина удаляет его шорткоды из контента:
function wpmanager_cleanup_shortcodes_on_deactivation() {
// Логика для удаления шорткодов плагина из базы
// Например, поиск и замена в wp_posts
}
register_deactivation_hook(__FILE__, 'wpmanager_cleanup_shortcodes_on_deactivation');Такой подход позволит поддерживать сайт в порядке и избавит от проблем с отображением непонятных тегов.
Выводы и рекомендации
Удаление неиспользуемых шорткодов — важный этап обслуживания WordPress-сайта. Он помогает избежать проблем с отображением контента и повышает производительность. Используйте комбинацию поиска по базе, автоматической фильтрации контента и плагинов для эффективного управления шорткодами. Обязательно делайте резервные копии перед массовыми изменениями базы данных.