Функция shortcode_unautop
в WordPress предназначена для удаления автоматических оберточных тегов <p>
из текста, содержащего шорткоды. Это может быть полезно, когда вы хотите, чтобы шорткоды не оборачивались в параграфы, что позволяет избежать проблем с отображением контента.
shortcode_unautop( string $text ): string
Возвращаемое значение: Изменённая строка без оберточных тегов <p>
для шорткодов.
Параметры:
- $text (string, обязательный): Содержимое, которое нужно отформатировать.
Применение функции
Функция shortcode_unautop
используется для удаления тега <p>...</p>
, если он содержит только шорткод. Это позволяет избежать нежелательных оберточных тегов в контенте.
Пример 1: Демонстрация работы
Допустим, у нас зарегистрирован шорткод customshortcode
. Рассмотрим текст с различными примерами использования шорткода:
$str = '
<p>[customshortcode id="789"]</p>
текст
[customshortcode id="321"]
текст
<p>
[customshortcode id="654"]
</p>
текст
<p>[customshortcode id="789"] текст</p>
Шорткод с содержанием
<p>[customshortcode align="alignleft" width="495"]любой текст внутри[/customshortcode]</p>
';
echo shortcode_unautop( $str );
Результат работы:
[customshortcode id="789"]
текст
[customshortcode id="321"]
текст
[customshortcode id="654"]
текст
<p>[customshortcode id="789"] текст</p>
Шорткод с содержанием
[customshortcode align="alignleft" width="495"]любой текст внутри[/customshortcode]
Как видно из результата, теги <p>
были удалены вокруг шорткодов, когда они использовались отдельно, но остались, если в параграфе был дополнительный текст.
Пример 2: Регулярное выражение, используемое функцией
Функция shortcode_unautop
основывается на регулярных выражениях для поиска и удаления ненужных тегов <p>
. Вот пример регулярного выражения, которое используется для этой задачи (в зависимости от зарегистрированных шорткодов):
(?:[\r\n\t ]|\xC2\xA0| )*+(\[(embed|wp_caption|caption|gallery|playlist|audio|video|customshortcode|download)(?![\w-])[^\]\/]*(?:\/(?!\])[^\]\/]*)*?(?:\/\]|\](?:[^\[]*+(?:\[(?!\/\])[^\[]*+)*+\[\/\])?))(?:[\r\n\t ]|\xC2\xA0| )*+<\/p>
Заключение
Функция shortcode_unautop
упрощает управление шорткодами в WordPress, позволяя избежать автоматической обертки в теги <p>
. Она полезна для обеспечения корректного отображения контента, содержащего шорткоды, особенно если вы работаете с кастомными шорткодами, такими как customshortcode
, и хотите улучшить читаемость HTML-разметки.