如果你想把<br />
从内容中,您可以修改函数以将该签名替换为空字符串。这感觉像一个肮脏的黑客,但它对我有用。
值得注意的是,我的Chrome工具显示<br>
但实际代码正在呈现<br />
这就是表达式要检查的内容。
//[rezept]
function rezept_func( $atts, $content = null ) {
// remove \'<br />\'
$no_br = preg_replace( "/(<br\\s\\/>)/", "", do_shortcode( $content ) );
return \'<div class="drl-rezept-wrapper">\' . $no_br . \'</div>\';
}
add_shortcode( \'rezept\', \'rezept_func\' );
function rezept_zutaten_func( $atts, $content = null ) {
// remove \'<br />\'
$no_br = preg_replace( "/(<br\\s\\/>)/", "", $content );
return \'<div class="drl-rezept-left">\' . $no_br . \'</div>\';
}
add_shortcode( \'rezept-zutaten\', \'rezept_zutaten_func\' );
发生这种情况的原因是
wpautop
上的筛选器
$content
在它到达您的短代码之前。实际上,您可以禁用所有额外的
<br />
和
<p>
通过添加标记:
remove_filter( \'the_content\', \'wpautop\' );
您可以启用
p
没有
br
通过注册我们自己的过滤器:
add_filter( \'the_content\', \'wpautop_no_br\' );
function wpautop_no_br ($content, $br){
return wpautop($content, false);
}
虽然如果要禁用
wpautop
那么你影响的不仅仅是你的短代码,这是不推荐的。要查看差异,请查看这些块的输出。
echo \'<pre>RAW</pre><pre>\'
. get_post( get_the_ID() )->post_content
. \'</pre>\';
echo \'<pre>Filtered</pre><pre>\'
. wpautop( get_post( get_the_ID() )->post_content )
. \'</pre>\';
echo \'<pre>Filtered - No BR</pre><pre>\'
. wpautop( get_post( get_the_ID() )->post_content, false )
. \'</pre>\';