问题描述

嘿,我只是想防止在我的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。