Функция 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()
удобна для быстрого форматирования текста и улучшения его читабельности на сайте. Она позволяет избежать ручного добавления тегов и помогает поддерживать единообразный стиль оформления текста, что особенно полезно для блогов и сайтов с большим количеством контента.