为什么从_Content中删除空段落不起作用?

时间:2016-10-29 作者:DamithRuwantha

我只是想防止在我的WordPress帖子中创建空段落。

function removepar($content) {
    $content = str_replace("<p></p>","",$content);
    return $content;
}

add_filter(\'the_content\', \'removepar\');
我想知道为什么这不起作用?

注意,我发现我可以使用remove_filter( \'the_content\', \'wpautop\' ), 但我的问题是:Why 我的第一个过滤器不工作?

1 个回复
SO网友:Nabil Kadimi

它不起作用,因为:

也许你的过滤器运行到了贝诺蒂在评论中说的最早,你的过滤器回调可能会在添加空段落之前运行。

也许你正在处理的不是我的空<p></p>, 认为<br>, &nbsp;...

解决方案1:禁用autop (取下过滤器)。

解决方案2:

add_filter(\'the_content\', \'wpse_244389\');
function wpse_244389($content) {
    $pattern = \'#<p>(\\s|&nbsp;|</?\\s?br\\s?/?>)*</?p>#\';
    $content = preg_replace( $pattern, \'\', $content );
    return $content;
}
参见https://stackoverflow.com/a/14261024/358906

相关推荐

Apply_Filters()对所需的参数进行切片

我正在尝试向WooCommerce订单中的每个退款行添加一个按钮(其功能超出了这个问题的范围,足以说明它需要退款id作为参数)。我发现这些行是在woocommerce\\includes\\admin\\meta Box\\views\\html订单退款中创建的。无法重写的php。然而,有一项行动:do_action( \'woocommerce_admin_order_item_values\', null, $refund, $refund->get_id() ); 这似乎非常适合我的