Задать вопрос
raselgit
@raselgit
Веб-дизайнер

Как убрать тег «P» вокруг изображений?

В интернете нет конкретной информации о решении этой проблемы. Нужно чтобы при добавлении записи только картинки не оборачивались в тег "P". Я нашел такой кусок кода, который нужно разместить в файле functions.php:

function filter_ptags_on_images($content){
//функция preg replace, которая убивает тег p
    return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
}
add_filter('the_content', 'filter_ptags_on_images');

но он не заработал.

А вообще это нужно для решения такой проблемы: У контентной части будут отступы padding, а картинки в записи будут несмотря на это занимать всю ширину блока, тем самым картинка будет шире чем текст:

455b07e1545e4453aa430a236659210b.png

и в итоге должно получиться вот так:

c88dd8246a194a519d396c5742b527cb.png

Может есть другие варианты решения этой задачи?
  • Вопрос задан
  • 1678 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 3
ProjectSoft
@ProjectSoft
Front-end && Back-end разработчик
Вы точно прописал в файл functions.php именно используемой темы?
Ибо данный вами метод работает.
Ответ написан
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
У себя на сайте реализовывал нечто подобное. Такой вариант нужен?

img {
    max-width: 120%;
    margin-left: -10%;
    margin-right: -10%;
    height: auto !important;
}
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Код, который вы нашли, правильный и точно работает, удаляя обертывающий тег P вокруг изображений, вставленных в визуальный редактор. Собственно, у вас на скриншоте "с хуком" тега P как раз и нет. Вообще нет. А вот растянуть картинку на всю ширину - это уже другая задача, и она из мира CSS.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@karminski
Senior React.JS Developer
Как насчёт отрицательных margin у картинки? А тег P оставить в покое.
Ответ написан
@KingAnton
Добавьте в functions.php

remove_filter( 'the_content', 'wpautop' );
Ответ написан
sergski
@sergski
web-developer
Решается так:
p img {
  width: 100vw;
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
}
Ответ написан
@GreatRash
Basically you need to make WordPress treat img like block-level element for the purpose of formatting. Such elements are hardcoded in wpautop() and list is unfortunately not filtered.

What I would do is:

1) Fork wpautop() under different name.
2) Add img to regexp in $allblocks variable.
3) Remove wpautop from the_content filter.
4) Add your forked version to the_content.

You might need to play with priority and possibly remove and re-add other filters if something breaks because of changed processing order.

(c) - последний ответ особенно интересен
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы