WordPress: автоматическое удаление пустых параграфов p в контенте

Пустые теги <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*(?:&nbsp;|\s)*\s*<\/p>/i', '', $content);
    return $content;
}
add_filter('the_content', 'wpskills_remove_empty_p_tags', 20);

Объяснение кода:

  • Регулярное выражение ищет теги <p></p>, внутри которых нет видимого текста, только пробелы и символы &nbsp;.
  • Функция 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*(?:&nbsp;|\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-кода. Важно также уделять внимание качеству исходного контента и настройкам редактора, чтобы минимизировать появление пустых блоков изначально.

WordPress: автоматическое удаление пустых параграфов p в контенте
04.12.2025
WooCommerce: авторизация через телефон без плагинов
08.05.2026
Оптимизация производительности WP_Query с meta_query в WordPress
18.03.2026
Как удалить ненужные shortcode из контента WordPress
05.01.2026
Как добавить автоматический alt к изображениям в WordPress
08.01.2026