Пустые HTML-теги, такие как <p>, <div> или <span> без содержимого, часто появляются в контенте WordPress. Они могут возникать из-за особенностей визуального редактора Gutenberg, старых плагинов или неправильного форматирования контента. Такие теги увеличивают размер страницы, влияют на SEO и могут создавать проблемы с версткой. В этой статье мы рассмотрим, как эффективно удалить пустые теги в WordPress с помощью кода и популярных плагинов.
Почему важно удалять пустые теги в WordPress
Пустые теги не несут смысловой нагрузки, но увеличивают объем HTML-кода, что замедляет загрузку страницы и усложняет её восприятие поисковыми системами. Кроме того, они могут вызывать визуальные артефакты в дизайне, особенно если стили завязаны на вложенность или специфические блоки.
Удаление пустых тегов помогает сделать код чище и оптимизировать сайт, что положительно сказывается на скорости и SEO.
Методы удаления пустых тегов в WordPress
1. Очистка контента при сохранении с помощью фильтра wpacademy_filter_empty_tags
Один из надежных способов — фильтровать содержимое поста на этапе сохранения. Мы создадим функцию, которая удалит пустые теги <p> и <div> без содержимого, но сохранит структурно важные элементы.
function wpacademy_filter_empty_tags($content) {
// Удаляем пустые абзацы (теги p)
$content = preg_replace('/<p>\s*( )?\s*<\/p>/i', '', $content);
// Удаляем пустые div
$content = preg_replace('/<div>\s*<\/div>/i', '', $content);
// Можно добавить другие теги по необходимости
return $content;
}
add_filter('content_save_pre', 'wpacademy_filter_empty_tags');
Этот код нужно добавить в файл functions.php вашей темы или в плагин-сниппет. Он сработает при сохранении записи и очистит пустые теги.
2. Использование регулярных выражений для очистки контента перед выводом
Если вы хотите очищать контент только при отображении на сайте, можно применить фильтр the_content. Это удобно, если контент нужно хранить без изменений, но выводить уже очищенным.
function wpacademy_clean_empty_tags_output($content) {
$content = preg_replace('/<p>\s*( )?\s*<\/p>/i', '', $content);
$content = preg_replace('/<div>\s*<\/div>/i', '', $content);
return $content;
}
add_filter('the_content', 'wpacademy_clean_empty_tags_output');
Этот способ не изменяет данные в базе, а только чистит HTML перед показом пользователю.
Плагины для автоматической очистки HTML от пустых тегов
Для тех, кто не хочет писать код, есть несколько плагинов, которые помогают оптимизировать HTML-код и удалять пустые элементы:
- Clearfy Pro — содержит опции для очистки кода и удаления лишних тегов. Это удобный инструмент для комплексной оптимизации сайта. Подробнее: Clearfy Pro на WPShop
- Autoptimize — плагин для оптимизации кода, который имеет настройки для удаления пустых строк и комментариев, что косвенно уменьшает пустые теги.
- WP-Optimize — плагин для оптимизации базы данных и кэша, который иногда помогает очистить контент при обновлениях.
Использование плагинов удобно, если требуется комплексное решение без ручного вмешательства.
Удаление пустых тегов из виджетов и пользовательского HTML
Пустые теги часто появляются не только в основном контенте, но и в виджетах или пользовательском HTML в сайдбаре. Для их очистки можно использовать фильтр widget_text:
function wpacademy_filter_empty_tags_widget($text) {
$text = preg_replace('/<p>\s*( )?\s*<\/p>/i', '', $text);
$text = preg_replace('/<div>\s*<\/div>/i', '', $text);
return $text;
}
add_filter('widget_text', 'wpacademy_filter_empty_tags_widget');
Такой подход поможет поддерживать чистоту HTML в любом месте сайта.
Практические советы и особенности
При удалении пустых тегов важно учитывать, что иногда пустой тег может содержать CSS-классы или JavaScript-события, которые нужны для работы сайта. Поэтому рекомендуется тестировать изменения на тестовой среде перед применением на боевом сайте.
Если вы используете визуальные редакторы, такие как Gutenberg, часто пустые теги возникают из-за поведения блоков. В таких случаях стоит рассмотреть настройку самих блоков или использовать фильтры именно для конкретных типов контента.
Для массовой очистки большого объема старого контента можно написать скрипт, который пройдет по всем записям и обновит их с помощью функции очистки.
Заключение
Удаление пустых тегов в WordPress улучшает качество кода, повышает скорость загрузки и упрощает поддержку сайта. При помощи простых фильтров и регулярных выражений можно автоматизировать этот процесс как при сохранении, так и при выводе контента. Для комплексной оптимизации стоит обратить внимание на плагины Clearfy Pro и Autoptimize, которые помогут справиться с подобными задачами без лишнего кода.