Пустые HTML-теги в содержимом WordPress — распространённая проблема, которая портит структуру страницы, усложняет стилизацию и может негативно повлиять на SEO. Часто такие теги появляются после копирования контента из других источников, работы визуального редактора или из-за некорректной работы плагинов.
Почему важно удалять пустые теги в WordPress
Пустые теги, такие как <p></p>, <div></div>, <span></span> и другие, не несут смысловой нагрузки и создают "мусор" в HTML. Это ухудшает восприятие кода браузером и поисковыми системами, может привести к неправильному отображению на мобильных устройствах и усложняет дальнейшую работу с CSS.
Удаление таких тегов помогает сделать код чище и облегчить отладку. Особенно это актуально для сайтов с большим объёмом динамического контента или если вы используете кастомные шаблоны и плагины.
Типичные причины появления пустых тегов
Основные источники пустых тегов:
- Визуальный редактор WordPress (Gutenberg или классический), который при форматировании вставляет лишние абзацы.
- Копирование текста с внешних сайтов и вставка в редактор без очистки форматирования.
- Некорректная работа плагинов, которые модифицируют содержимое постов или страниц.
- Ошибки в пользовательских шаблонах и функциях, которые формируют HTML.
Как удалить пустые теги в WordPress с помощью PHP — пример функции
Один из самых надёжных способов — фильтрация содержимого на этапе вывода с помощью хука the_content. Ниже приведён пример функции, которая удаляет пустые теги p, div и span, если внутри них нет текста или других тегов.
function wplock_remove_empty_tags($content) {
// Регулярное выражение для пустых тегов p, div, span
$pattern = '#<(p|div|span)[^>]*>\s*</\1>#i';
// Цикл для удаления повторяющихся пустых тегов
while (preg_match($pattern, $content)) {
$content = preg_replace($pattern, '', $content);
}
return $content;
}
add_filter('the_content', 'wplock_remove_empty_tags');Эта функция ищет теги p, div, span без содержимого (пробелы и переносы строк игнорируются) и удаляет их. Цикл позволяет удалить вложенные пустые теги, которые могут появиться после первой замены.
Улучшение функции: удаление пустых тегов с атрибутами и пробелами
Иногда теги содержат атрибуты, например <div class="test"></div>, и их тоже нужно удалять. Для этого регулярное выражение можно сделать более гибким:
function wplock_remove_all_empty_tags($content) {
// Паттерн для тегов с атрибутами
$pattern = '#<(p|div|span)(\s+[^>]*)?>\s*</\1>#i';
while (preg_match($pattern, $content)) {
$content = preg_replace($pattern, '', $content);
}
return $content;
}
add_filter('the_content', 'wplock_remove_all_empty_tags');Таким образом мы учитываем любые атрибуты и удаляем пустые теги с ними.
Пример использования плагина Clearfy для оптимизации HTML
Если вы не хотите писать код самостоятельно, можно использовать готовые решения, например плагин Clearfy. Он содержит функции для очистки HTML и удаления лишних тегов, а также оптимизации базы данных и безопасности.
Clearfy позволяет управлять очисткой HTML через настройки, что удобно для тех, кто не хочет лезть в код. Плагин совместим с большинством популярных тем и плагинов, и легко интегрируется в рабочий процесс.
Дополнительные советы по работе с пустыми тегами
Используйте валидатор HTML
Регулярно проверяйте ваш сайт через валидаторы, например W3C Validator. Это позволит выявить не только пустые теги, но и другие ошибки в верстке.
Очищайте контент перед вставкой
При копировании текста из Word или других источников используйте функцию "Вставить как текст" в редакторе или специальные плагины, которые очищают форматирование.
Проверяйте работу плагинов и тем
Некорректные плагины могут вставлять пустые теги. Отключайте по очереди плагины и проверяйте результат, чтобы найти виновника.
Заключение
Удаление пустых тегов в WordPress — важный шаг для улучшения качества кода и SEO. С помощью простых функций на PHP и фильтров вы можете автоматизировать этот процесс и поддерживать чистоту HTML. Если же хотите более универсальное и удобное решение — обратите внимание на плагин Clearfy, который поможет оптимизировать сайт без глубоких знаний программирования.