Пустые теги <p></p> в контенте WordPress — частая проблема, которая может возникать из-за особенностей визуального редактора или при переносе текста из внешних источников. Они создают лишние отступы и нарушают верстку, особенно на сайтах с кастомным дизайном. В этой статье мы подробно рассмотрим, как автоматически удалять пустые параграфы в контенте WordPress, используя практические примеры с кодом и популярные плагины.
Почему появляются пустые теги <p> в WordPress
WordPress по умолчанию использует функцию wpautop(), которая оборачивает текст в параграфы для удобства редактирования и отображения. Однако при копировании текста из внешних источников или при редактировании в визуальном редакторе могут появляться пустые параграфы — <p></p> или с пробелами внутри. Их наличие:
- нарушает визуальную целостность страницы;
- создаёт лишние отступы и пустые блоки;
- может влиять на SEO из-за избыточного кода;
- усложняет поддержку и стилизацию контента.
Пример пустого параграфа в содержимом:
<p></p>
<p>Текст статьи</p>
<p> </p>Автоматическое удаление пустых параграфов с помощью фильтра WordPress
Самый простой и эффективный способ — подключить функцию, которая будет фильтровать контент перед выводом на страницу и удалять пустые параграфы. Для этого добавим кастомный фильтр в файл functions.php вашей темы или в плагин-муфу.
Пример функции для удаления пустых <p> с пробелами, табуляциями и неразрывными пробелами:
function wpskills_remove_empty_p_tags($content) {
// Удаляем параграфы, которые содержат только пробелы, табы, переводы строк и неразрывные пробелы
$content = preg_replace('/<p>\s*(?: |\s)*\s*<\/p>/i', '', $content);
return $content;
}
add_filter('the_content', 'wpskills_remove_empty_p_tags', 20);Объяснение кода:
- Регулярное выражение ищет теги
<p></p>, внутри которых нет видимого текста, только пробелы и символы . - Функция
preg_replaceзаменяет их на пустую строку. - Фильтр
the_contentприменяется после стандартногоwpautop, поэтому пустые параграфы уже сформированы, и их можно отфильтровать.
Дополнительно: удаление пустых параграфов из виджетов и excerpt
Если на сайте пустые <p> появляются не только в основном контенте, но и в виджетах или отрывках (excerpt), можно добавить фильтры для них:
add_filter('widget_text', 'wpskills_remove_empty_p_tags', 20);
add_filter('the_excerpt', 'wpskills_remove_empty_p_tags', 20);Таким образом решение будет универсальным и избавит от пустых параграфов везде.
Плагины для управления пустыми параграфами и форматированием контента
Если вы не хотите писать код, можно использовать плагины, которые помогают контролировать автоматическое форматирование контента:
- Advanced TinyMCE Configuration — позволяет настроить визуальный редактор TinyMCE, отключить автоматическое добавление параграфов и другие поведения.
- Raw HTML — позволяет вставлять HTML без автоматической обработки WordPress, что исключает появление лишних тегов.
- Remove Empty Tags — специализированный плагин, удаляющий пустые теги, включая
<p>,<div>и другие.
Однако плагины часто добавляют дополнительную нагрузку, поэтому более эффективным будет написать кастомный фильтр, особенно если проблема локализована.
Практические советы по предотвращению пустых параграфов
Чтобы минимизировать появление пустых параграфов, рекомендуем:
- Использовать текстовые редакторы без форматирования при копировании (например, Notepad).
- Проверять содержимое в режиме HTML редактора WordPress и удалять лишние теги вручную.
- Отключать визуальное форматирование там, где это возможно, с помощью плагинов.
- В складках редактора Gutenberg использовать блоки «Параграф» аккуратно и избегать пустых блоков.
Также можно расширить функцию фильтра для удаления параграфов, которые содержат только HTML-комментарии или пустые теги <br>.
Пример расширенного фильтра с удалением пустых блоков и <br>
function wpskills_remove_empty_p_tags_extended($content) {
// Удаляем пустые параграфы
$content = preg_replace('/<p>\s*(?: |\s|<br\s*\/?>)*\s*<\/p>/i', '', $content);
return $content;
}
add_filter('the_content', 'wpskills_remove_empty_p_tags_extended', 20);Заключение по автоматическому удалению пустых параграфов
Пустые теги <p></p> — распространённая проблема WordPress, которая легко решается с помощью фильтра the_content и регулярных выражений. Такой подход не требует сложных плагинов и позволяет поддерживать чистоту HTML-кода. Важно также уделять внимание качеству исходного контента и настройкам редактора, чтобы минимизировать появление пустых блоков изначально.