В WordPress со временем накапливается множество шорткодов, которые могут больше не использоваться в контенте сайта. Оставлять такие шорткоды без внимания не рекомендуется, так как они могут замедлять работу сайта, создавать ошибки при загрузке страниц и усложнять поддержку. В этой статье рассмотрим, как автоматически находить и удалять неиспользуемые шорткоды из контента WordPress, используя готовые решения и собственные функции.
Почему важно удалять неиспользуемые шорткоды в WordPress
Шорткоды — это удобный инструмент для быстрого добавления функционала в страницы и записи. Однако при удалении плагинов или смене тем, которые регистрировали эти шорткоды, контент сайта может остаться с «мертвыми» шорткодами. Они отображаются как текст с квадратными скобками или полностью ломают вывод страницы.
Удаление таких шорткодов помогает:
- Избавиться от визуального мусора на сайте и ошибок в разметке.
- Повысить производительность, так как WordPress не пытается парсить и интерпретировать несуществующие шорткоды.
- Упростить редактирование контента в будущем.
Автоматизация процесса позволяет быстро очистить весь сайт, особенно если много записей и страниц.
Как найти неиспользуемые шорткоды: обзор методов и плагинов
Сначала нужно определить, какие шорткоды зарегистрированы в системе, а какие реально используются в базе данных. Для этого можно применить несколько подходов.
Использование плагина Clearfy Pro для автоматизации
Clearfy Pro — мощный плагин оптимизации, который умеет искать и удалять неиспользуемые шорткоды из контента. Он автоматически анализирует записи и очищает их.
Преимущества:
- Простая настройка и запуск очистки.
- Поддержка массовой обработки.
- Дополнительные инструменты оптимизации сайта.
Недостаток — плагин платный, но для профессиональных сайтов это оправдано.
Ручной поиск через SQL и PHP-код
Если вы предпочитаете кодовые решения или не хотите устанавливать плагин, можно реализовать поиск через SQL-запросы и скрипты на PHP.
Пример запроса для поиска всех записей с определённым шорткодом [example_shortcode]:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%[example_shortcode%';
Этот запрос покажет все записи, где встречается данный шорткод. Повторив для всех известных шорткодов, вы можете увидеть, какие из них не встречаются вовсе — их можно считать неиспользуемыми.
Пример функции для автоматического удаления неиспользуемых шорткодов
Ниже приведён пример функции, которая сканирует записи на предмет неиспользуемых шорткодов и удаляет их из контента. Функция wpdeveloper_remove_unused_shortcodes получает список зарегистрированных шорткодов и проверяет их использование.
function wpdeveloper_remove_unused_shortcodes() {
global $wpdb;
// Получаем список всех зарегистрированных шорткодов
$all_shortcodes = array_keys($GLOBALS['shortcode_tags']);
// Для каждого шорткода проверяем, используется ли он в базе
foreach ($all_shortcodes as $shortcode) {
// Формируем SQL-запрос для поиска шорткода в контенте
$like = '%[' . $wpdb->esc_like($shortcode) . '%';
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
$like
));
// Если шорткод нигде не используется, удаляем его регистрацию
if (intval($count) === 0) {
remove_shortcode($shortcode);
error_log("wpdeveloper: Шорткод [{$shortcode}] удалён как неиспользуемый.");
}
}
}
Эту функцию можно запускать вручную или по крону. Она не удаляет шорткод из контента (так как шорткод не найден), а освобождает память, удаляя регистрацию неиспользуемого хука.
Дополнение: массовое удаление устаревших шорткодов из контента
Для удаления шорткодов, которые больше не поддерживаются (например, после удаления плагина), можно применить такой код:
function wpdeveloper_strip_unused_shortcodes_from_posts($shortcodes_to_remove) {
global $wpdb;
foreach ($shortcodes_to_remove as $shortcode) {
// Получаем ID записей с данным шорткодом
$posts = $wpdb->get_results($wpdb->prepare(
"SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%[' . $wpdb->esc_like($shortcode) . '%'
));
foreach ($posts as $post) {
$new_content = preg_replace('/\[' . preg_quote($shortcode, '/') . '[^\]]*\]/', '', $post->post_content);
// Обновляем запись, если контент изменился
if ($new_content !== $post->post_content) {
wp_update_post(array(
'ID' => $post->ID,
'post_content' => $new_content
));
}
}
}
}
Использование:
add_action('init', function() {
// Список шорткодов для удаления из контента
$shortcodes_to_remove = array('oldshortcode1', 'oldshortcode2');
wpdeveloper_strip_unused_shortcodes_from_posts($shortcodes_to_remove);
});
Этот код удаляет указанные шорткоды из всех записей и страниц, где они встречаются.
Советы по предотвращению накопления неиспользуемых шорткодов
Чтобы не сталкиваться с проблемой в будущем, рекомендуем придерживаться следующих практик:
- Перед удалением плагина, который добавляет шорткоды, сначала очистите контент от этих шорткодов.
- Используйте плагины с продуманным процессом удаления и очистки данных.
- Регулярно проверяйте контент на наличие «висячих» шорткодов с помощью SQL-запросов или плагинов.
- Автоматизируйте очистку при помощи плагинов типа Clearfy Pro или собственного кода.
Заключение
Автоматическое удаление неиспользуемых шорткодов в WordPress — важный этап поддержания чистоты и производительности сайта. С помощью готовых решений, таких как Clearfy Pro, и собственных функций на PHP вы сможете быстро и безопасно очистить контент от устаревших и неиспользуемых шорткодов, облегчая дальнейшую работу с сайтом.
Если хотите углубиться в оптимизацию, обратите внимание на комплексные инструменты из WPShop.ru, где есть множество полезных плагинов для оптимизации и автоматизации WordPress.