嘿,伙计们,我只是想防止在我的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>
知道这个空p是从哪里来的吗?
最合适的回答,由SO网友:Bainternet 整理而成
WordPress将自动插入<p>
和</p>
将文章或页面中的内容分隔开的标记。如果出于某种原因,希望或需要删除这些代码,可以使用以下代码段之一。
要完全禁用wpautop筛选器,可以使用:
remove_filter(\'the_content\', \'wpautop\');
如果您仍希望此功能正常运行,请尝试向筛选器添加一个稍后的优先级值,例如:
add_filter(\'the_content\', \'removeEmptyParagraphs\',99999);
SO网友:kater louis
与我之前的2个答案相同,但更新了regex,因为他的方法不适合我。
正则表达式:/<p>(?:\\s| )*?<\\/p>/i
(非捕获组查找任意数量的空格或
s在p-tag内,所有大小写均为INSTIVE。
add_filter(\'the_content\', function($content) {
$content = force_balance_tags($content);
return preg_replace(\'/<p>(?:\\s| )*?<\\/p>/i\', \'\', $content);
}, 10, 1);