问题描述
嘿,我只是想防止在我的 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 来自哪里?
最佳解决方案
WordPress 将自动插入<p>
和</p>
标签,该标签在帖子或页面中分隔内容中断。如果由于某种原因想要或需要删除这些,可以使用以下任一代码段。
要完全禁用 wpautop 过滤器,可以使用:
remove_filter('the_content', 'wpautop');
如果您仍然希望此功能可以尝试在过滤器中添加以下优先级值:
add_filter('the_content', 'removeEmptyParagraphs',99999);
次佳解决方案
我有同样的问题。我只是做了一个… 让我们说… 不是很美丽的解决方案,但它的工作,迄今为止,这是我唯一的解决方案。我添加了一点 JavaScript 行。它需要 jQuery,但我相信你可以找出没有。
这是我的小 JS:
$('p:empty').remove();
这对我有用
第三种解决方案
我知道这已经标记为’solved’,但仅供参考,这里有一个功能,无需添加任何标记,就可以完成所需的功能。只要把它放在你的主题的 functions.php 中:
add_filter('the_content', 'remove_empty_p', 20, 1);
function remove_empty_p($content){
$content = force_balance_tags($content);
return preg_replace('#<p>s*+(<brs*/*>)?s*</p>#i', '', $content);
}
这是从这个要点:https://gist.github.com/1668216
第四种方案
您可以运行您的过滤器之前那个讨厌的 wpautop
挂钩和混淆的标记。
add_filter('the_content', 'qanda', 7 );
这样一来,你已经把它所需要的东西转换成了它,这在某些情况下有帮助。
第五种方案
只需使用 CSS
p:empty {
display: none;
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。