Функция wpautop() в WordPress автоматически оборачивает блоки текста с двойными переносами строк в HTML-теги <p>, а одиночные переносы преобразует в <br />. Это делает текст удобочитаемым, форматированным и улучшает его восприятие, особенно в длинных постах и статьях.
wpautop( string $text, bool $br = true ): string
Параметры
$text(обязательный): Строка текста, которая нуждается в форматировании.$br(необязательный): Если установлен вtrue, одиночные переносы строк будут преобразованы в<br />. По умолчанию —true.
Возвращаемое значение
Функция возвращает строку, преобразованную с использованием тегов <p> и <br />.
Как работает wpautop()
wpautop() используется для автоматического добавления тегов <p> для текста, разделенного двумя переносами строки, и <br /> для одиночных переносов. Однако переносы в блоках <script>, <style> и <svg> остаются нетронутыми.
Пример 1: Автоматическое форматирование текста
Форматируем текст для его разбивки на параграфы и добавления переносов.
$example_text = <<<TEXT
Это начало текста,
который содержит несколько строк.
<div>А это текст внутри блока div</div>
И вот еще один параграф.
TEXT;
echo wpautop($example_text);
Результат:
<p>Это начало текста,<br />
который содержит несколько строк.</p>
<div>А это текст внутри блока div</div>
<p>И вот еще один параграф.</p>
Функция wpautop() добавила тег <p> для абзацев и <br /> для одиночного переноса строки.
Пример 2: Применение wpautop к пустой строке
Если передать пустую строку в wpautop(), функция просто вернет пустую строку без добавления тегов.
var_dump(wpautop(''));
Результат:
string(0) ""
Функция wpautop() вернула пустую строку, что подтверждает отсутствие ненужных тегов.
Пример 3: Отключение wpautop для контента постов
В случаях, когда добавление <p> и <br /> мешает формату, например в тексте, содержащем HTML-структуру, wpautop() можно отключить для контента с помощью remove_filter().
remove_filter('the_content', 'wpautop'); // Отключение в содержимом постов
remove_filter('the_excerpt', 'wpautop'); // Отключение в анонсах
Этот код предотвращает автоматическое добавление параграфов в текст постов и анонсов.
Полезные советы по использованию wpautop
- Настройка добавления
<br />: Если вам не нужны<br />для одиночных переносов, можно установить$br = false, и функция будет добавлять только теги<p>. - Отключение wpautop глобально: В некоторых темах или плагинах можно отключить
wpautop()на уровне всего сайта или отдельных страниц. Для этого добавьтеremove_filter()вfunctions.php. - Поддержка HTML-блоков:
wpautop()корректно обрабатывает HTML-блоки, такие как<div>,<span>, сохраняя их целостность и не добавляя внутри<p>и<br />.
Пример сложного текста для wpautop
Допустим, у нас есть текст с различными HTML-блоками и сложной структурой, где требуется поддерживать определенное форматирование.
$complex_text = <<<TEXT
Текст с <strong>выделением</strong> и
переносами строк.
<div>Здесь начинается новый блок div</div>
<h2>Заголовок раздела</h2>
Еще один абзац, для демонстрации работы wpautop.
TEXT;
echo wpautop($complex_text);
Результат:
<p>Текст с <strong>выделением</strong> и<br />
переносами строк.</p>
<div>Здесь начинается новый блок div</div>
<h2>Заголовок раздела</h2>
<p>Еще один абзац, для демонстрации работы wpautop.</p>
Функция wpautop() не добавляет лишние теги <p> внутри <div> или <h2>, сохраняя структуру HTML-блоков, и форматирует текст только там, где это уместно.
Применение wpautop в WordPress
По умолчанию WordPress использует wpautop() для фильтрации текста в следующих элементах:
add_filter('the_content', 'wpautop');
add_filter('the_excerpt', 'wpautop');
add_filter('comment_text', 'wpautop');
Таким образом, wpautop() обрабатывает содержимое постов, анонсов и комментариев, автоматически добавляя теги <p> и <br />.
Заключение
Функция wpautop() удобна для быстрого форматирования текста и улучшения его читабельности на сайте. Она позволяет избежать ручного добавления тегов и помогает поддерживать единообразный стиль оформления текста, что особенно полезно для блогов и сайтов с большим количеством контента.