Шорткоды — один из самых удобных способов расширить функциональность сайта на WordPress. Но со временем на проекте могут накопиться неиспользуемые шорткоды, особенно после удаления плагинов или тем, которые их добавляли. Они не только засоряют контент, но и могут вызывать ошибки и замедлять работу сайта. В этой статье разберём, как автоматизировать процесс поиска и удаления неиспользуемых шорткодов из контента WordPress, используя PHP-код и полезные инструменты.
Почему важно удалять неиспользуемые шорткоды в WordPress
Неиспользуемые шорткоды остаются в базе данных в виде текстовых меток вида [example_shortcode]. При отсутствии регистрации шорткода WordPress выводит их в сыром виде, портя внешний вид страниц. Кроме того, они увеличивают объём контента, что затрудняет работу с редактором и влияет на SEO.
Регулярное удаление таких шорткодов улучшает качество контента, предотвращает появление ошибок и облегчает поддержку сайта.
Как понять, что на сайте есть неиспользуемые шорткоды
- Просмотр страниц с видимыми нераспознанными шорткодами в виде текста.
- Использование плагинов для поиска шорткодов, например, Shortcode Cleaner.
- Анализ базы данных на наличие шорткодов, которых нет в коде сайта.
Автоматический поиск и удаление неиспользуемых шорткодов с помощью кода
Для автоматизации процесса можно написать функцию, которая будет сканировать записи на наличие шорткодов, сверять их с зарегистрированными в WordPress и удалять те, которые не зарегистрированы.
Пример функции WPMA_remove_unused_shortcodes
function WPMA_remove_unused_shortcodes() {
global $wpdb;
// Получаем все зарегистрированные шорткоды
global $shortcode_tags;
$registered = array_keys($shortcode_tags);
// Получаем все посты с контентом
$posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type IN ('post', 'page')");
foreach ($posts as $post) {
$content = $post->post_content;
// Находим все шорткоды в контенте
if (preg_match_all('/\[(\w+)(\s[^\]]*)?\]/', $content, $matches)) {
$shortcodes_in_post = array_unique($matches[1]);
// Определяем неиспользуемые шорткоды
$unused = array_diff($shortcodes_in_post, $registered);
if (!empty($unused)) {
foreach ($unused as $shortcode) {
// Удаляем шорткод из контента
$pattern = '/\[' . preg_quote($shortcode, '/') . '(\s[^\]]*)?\]/';
$content = preg_replace($pattern, '', $content);
}
// Обновляем запись в базе данных
$wpdb->update(
$wpdb->posts,
['post_content' => $content],
['ID' => $post->ID]
);
}
}
}
}
// Запуск функции можно привязать к крону или запускать вручную
// add_action('init', 'WPMA_remove_unused_shortcodes');
Эта функция проходит по всем опубликованным постам и страницам, ищет шорткоды, которые не зарегистрированы в WordPress, и удаляет их из контента. Вы можете запускать её вручную или подключить к крону.
Использование плагина Clearfy для управления шорткодами
Если хочется более удобного решения без кода, плагин Clearfy из набора WPShop предлагает функции очистки контента, в том числе позволяет отключать и удалять неиспользуемые шорткоды. Плагин анализирует сайт, предупреждает о проблемных местах и помогает оптимизировать структуру.
Clearfy полезен тем, что имеет удобный интерфейс и множество дополнительных функций для оптимизации и безопасности WordPress.
Как предотвратить появление неиспользуемых шорткодов в будущем
Удаление шорткодов вместе с отключением плагинов
При деактивации плагина, который добавляет шорткод, полезно удалять шорткод из контента автоматически. Для этого в хуках деактивации плагина можно вызвать функцию, аналогичную приведённой выше, чтобы очистить записи.
Использование плейсхолдеров вместо шорткодов
Если функциональность временно не нужна, лучше заменять шорткод на плейсхолдер или комментарий, чтобы не ломать контент.
Регулярный аудит сайта
Проводите регулярный аудит сайта на наличие «битых» шорткодов с помощью плагинов или кастомных скриптов. Это поможет вовремя выявлять и устранять проблемы.
Выводы и рекомендации
Автоматическое удаление неиспользуемых шорткодов — важная задача для поддержания чистоты и производительности сайта на WordPress. Простая PHP-функция, приведённая выше, позволяет быстро очистить контент без сторонних плагинов. Но если хотите удобства и дополнительных возможностей — используйте Clearfy.
Не забывайте планировать удаление шорткодов при деактивации плагинов и регулярно проверять сайт на наличие оставшихся меток. Таким образом вы сохраните контент чистым и сайт быстрым.