Эй, ребята, я просто хочу предотвратить создание пустых абзацев в моем посте WordPress. Это происходит довольно часто при попытке вручную разместить содержимое.
Я не знаю, почему это не вступает в силу?
/*Remove empty paragraph tags from the_content*/
function removeEmptyParagraphs($content) {
/*$pattern = "/<p[^>]*><\\/p[^>]*>/";
$content = preg_replace($pattern, '', $content);*/
$content = str_replace("<p></p>","",$content);
return $content;
}
add_filter('the_content', 'removeEmptyParagraphs');
редактировать / обновление:
Кажется, проблема в следующем:
function qanda($content) {
// filters for [q=some question] and [a=some answer]
// wraps it inside of <div class="qanda"><div class="question"> </div><div class="answer"> </div></div>
$content = preg_replace('/\[q=(.+?)].+?\[a=(.+?)]/is', '<div class="qanda"><div class="question">$1</div><div class="answer">$2</div></div>', $content);
return $content;
}
add_filter('the_content', 'qanda');
Я сделал эту функцию сам, чтобы отфильтровать своего рода шаблон шорткода в моих сообщениях и страницах. Хотя в моем бэкэнде пост полностью сделан без абзацев и лишних пробелов, результат выглядит так:
<div class="entry">
<p></p>
<div class="qanda">...</div>
<p></p>
<p></p>
<div class="qanda">...</div>
<p></p>
<p></p>
<div class="qanda">...</div>
</div>
Есть идеи, откуда взялись эти пустые буквы?
wpautop
это сделать, например.add_filter('the_content', 'qanda', 7 );
..Ответы:
WordPress будет автоматически вставлять
<p>
и</p>
теги , которые разделяют разрывы контента внутри поста или страницы. Если по какой-либо причине вы хотите или должны удалить их, вы можете использовать любой из следующих фрагментов кода.Чтобы полностью отключить фильтр wpautop, вы можете использовать:
Если вы по-прежнему хотите, чтобы это работало, попробуйте добавить более позднее значение приоритета в ваш фильтр, например:
источник
У меня была та же проблема, что и у вас. Я только что ... скажем ... не очень красивое решение, но оно работает, и пока это единственное решение, которое у меня есть. Я добавил небольшую строку JavaScript. Это требует jQuery, но я уверен, что вы можете понять это без.
Это мой крошечный JS:
Это работает для меня!
источник
p:empty { display:none; }
<p></p>
но не работает<p>\n</p>
.Я знаю, что это уже помечено как «решено», но просто для справки, вот функция, которая делает именно то, что вы хотите, без необходимости добавлять какие-либо разметки к сообщениям. Просто поместите это в functions.php вашей темы:
Это из этой сущности: https://gist.github.com/1668216
источник
force_balance_tags
когда он сталкивается с<
персонажем в определенных ситуациях. Подробности смотрите в билете [9270] ( core.trac.wordpress.org/ticket/9270 ).Просто используйте CSS
источник
тег <p>, это не сработает.Вы можете просто запустить свой фильтр до того, как этот неприятный
wpautop
зацепит и испортит разметку.Таким образом, вы уже преобразовали то, что вам нужно, к тому времени, когда он подключится, что в некоторых случаях помогает.
источник
Тот же подход, что и 2 ответа до меня, но обновленное регулярное выражение, потому что его у меня не сработало.
регулярное выражение:
/<p>(?:\s| )*?<\/p>/i
(группа без захвата ищет любое количество пробелов или
s внутри p-тега, без учета регистра).источник
Я нахожу это странным, но на самом деле вызов
the_content()
будет вставлять абзацы так, как вы описываете. Если вам нужен HTML-код, в основном, как вы его ввели (то же самое, что и «просмотр HTML» при редактировании), используйтеget_the_content()
метод, который возвращает содержимое без форматирования и теги абзаца.Поскольку он возвращает его, убедитесь, что вы используете что-то вроде:
Смотрите также: http://codex.wordpress.org/Function_Reference/get_the_content
источник
Это рекурсивно удалит все пустые HTML-теги из строки
Шаблон взят из http://codesnap.blogspot.in/2011/04/recursively-remove-empty-html-tags.html
источник
Если у вас есть
<p>
теги с пробелами в содержании, перейдите к своему сообщению или странице и отредактируйте его не в визуальном стиле.Вы найдете
там несколько. Удалите его, и пустые<p>
теги исчезнут.источник
Для того, чтобы иметь только HTML-контент без
теги, которые мы можем использовать в следующем цикле, чтобы выводить только HTML без форматирования поста или страницыисточник