Почему важно удалять неиспользуемые шорткоды в WordPress
Со временем на сайте WordPress накапливается множество шорткодов, особенно если вы пробовали разные плагины или темы. Неиспользуемые шорткоды могут создавать проблемы: они замедляют загрузку страниц, увеличивают размер базы данных и вызывают ошибки при рендеринге, если плагин, отвечающий за шорткод, удалён или отключён.
Удаление неиспользуемых шорткодов помогает поддерживать код сайта чистым, уменьшить нагрузку на сервер и обеспечить корректное отображение контента.
В этой статье расскажем, как найти и удалить неиспользуемые шорткоды, а также как автоматизировать этот процесс с помощью плагинов и кастомного кода.
Как найти неиспользуемые шорткоды: ручной и автоматический методы
Чтобы удалить неиспользуемые шорткоды, сначала нужно их обнаружить. Есть два основных подхода:
1. Ручной поиск по базе данных и контенту
Можно использовать SQL-запрос для поиска всех записей, где встречаются шорткоды:
SELECT ID, post_content FROM wp_posts WHERE post_content LIKE '%[%]%' AND post_status = 'publish';Этот запрос найдёт все публикации, содержащие шорткоды (они в тексте обособлены квадратными скобками). После этого можно проанализировать, какие шорткоды используются, а какие нет.
Недостаток этого метода — он трудоёмкий и не показывает, какие шорткоды зарегистрированы, но не используются.
2. Использование плагинов для поиска и управления шорткодами
Плагин Shortcode Cleaner Lite помогает автоматически обнаружить неиспользуемые шорткоды и очистить их из контента без потери данных.
Также полезен плагин Shortcodes Ultimate — он позволяет посмотреть список активных шорткодов и управлять ими.
Для комплексного анализа можно использовать плагин Code Snippets совместно с кастомным PHP кодом, который мы рассмотрим далее.
Удаление неиспользуемых шорткодов через кастомный код
Если вы хотите автоматизировать удаление шорткодов, которых нет в списке зарегистрированных, можно создать функцию, которая будет сканировать контент и удалять незарегистрированные шорткоды.
Пример функции для темы или плагина с префиксом wpassist_:
function wpassist_get_all_registered_shortcodes() {
global $shortcode_tags;
return array_keys($shortcode_tags);
}
function wpassist_remove_unused_shortcodes_from_content($content) {
$registered = wpassist_get_all_registered_shortcodes();
// Паттерн для поиска всех шорткодов
preg_match_all('/\[(\[?)(\w+)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*?)*)(\/?)(\]?)/', $content, $matches);
if(empty($matches[2])) {
return $content;
}
foreach($matches[2] as $key => $shortcode) {
if(!in_array($shortcode, $registered)) {
// Удаляем весь шорткод из контента
$pattern = preg_quote($matches[0][$key], '/');
$content = preg_replace('/' . $pattern . '/', '', $content);
}
}
return $content;
}
// Хук для фильтрации контента перед выводом
add_filter('the_content', 'wpassist_remove_unused_shortcodes_from_content');Этот код на лету удаляет нераспознанные шорткоды из постов, предотвращая появление ошибок и неправильного отображения.
Если нужно удалить шорткоды из базы данных, можно написать SQL-запросы с использованием регулярных выражений, но это требует осторожности и резервного копирования.
Оптимизация и поддержка чистоты базы данных
Шорткоды, даже неиспользуемые, могут остаться в метаданных и в пользовательских полях. Для качественной очистки базы рекомендуется использовать плагин Clearfy Pro, который умеет удалять ненужные метаданные, оптимизировать базу, отключать неиспользуемые функции WordPress.
Clearfy позволяет легко управлять шорткодами, автоматизировать очистку и поддерживать сайт в оптимальном состоянии без сложных ручных операций.
Рекомендации по использованию шорткодов для предотвращения проблем
Чтобы минимизировать появление неиспользуемых шорткодов, придерживайтесь следующих правил:
- Удаляйте плагины аккуратно, предварительно заменяя или удаляя шорткоды в контенте.
- Используйте плагин WPRemark для контроля и автоматического исправления контента с шорткодами.
- Создавайте резервные копии базы данных перед изменениями.
- Регистрируйте шорткоды с префиксом, например,
wpassist_, чтобы избежать конфликтов и упростить поиск.
Таким образом, грамотное управление шорткодами обеспечит стабильную работу сайта и чистоту контента.