这个<br>
标签来自wpautop()
, 这是通过以下方式添加到内容的众多显示过滤器之一wp-includes/default-filters.php
:
// Display filters
add_filter( \'the_content\', \'wptexturize\' );
add_filter( \'the_content\', \'convert_smilies\', 20 );
add_filter( \'the_content\', \'wpautop\' );
add_filter( \'the_content\', \'shortcode_unautop\' );
add_filter( \'the_content\', \'prepend_attachment\' );
add_filter( \'the_content\', \'wp_make_content_images_responsive\' );
...
// Shortcodes
add_filter( \'the_content\', \'do_shortcode\', 11 ); // AFTER wpautop()
WordPress运行
do_shortcode
在
wpautop
已在内容上运行。
下面是一个函数,它将删除<br>
标记(source):
function shortcode_wpautop_fix( $content ) {
// Define your shortcodes to filter, \'\' filters all shortcodes
$shortcodes = array( \'\' );
foreach ( $shortcodes as $shortcode ) {
$array = array (
\'<p>[\' . $shortcode => \'[\' .$shortcode,
\'<p>[/\' . $shortcode => \'[/\' .$shortcode,
$shortcode . \']</p>\' => $shortcode . \']\',
$shortcode . \']<br />\' => $shortcode . \']\'
);
$content = strtr( $content, $array );
}
return $content;
}
add_filter( \'the_content\', \'shortcode_wpautop_fix\' );
另一种方法是确保
do_shortcode
以前申请过吗
wpautop
. 这可以通过更改显示过滤器的优先级来实现。
remove_filter( \'the_content\', \'wpautop\' );
add_filter( \'the_content\', \'wpautop\', 99 );
add_filter( \'the_content\', \'shortcode_unautop\', 100 );
请注意
do_shortcode
已按优先级11运行,因此
wpautop
使用上面的代码完成。
同样值得注意的是,shortcode_unautop
专门针对markup on the outside of the shortcode, not the inside.