我有一个这样的简短代码:
function requestaquote($atts, $content = null){
extract(shortcode_atts(array(
'text'=>'',
'link'=>'',
'colour'=>''
), $atts));
return '<div class="speed-button"><img src="'.get_stylesheet_directory_uri().'/images/request-a-quote.jpg" alt="request a quote " /><p class="requstaquote">'.esc_attr($text).'</p></div><!--speed-button-->';
}
add_shortcode( 'quotetext', 'requestaquote' );
除了引入额外的<p></p>
对之外,它正在工作:
<div class="textwidget">
<p></p>
<div class="speed-button">...</div>
<p></p>
</div>
这搞乱了我的格式。
我试过了remove_filter('the_content', 'wpautop');
如何删除这些<p></p>
对。
答案 0 :(得分:0)
您可以推迟wp_autop
因为它在短代码输出之前处理:
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);
或使用cleanup_shortcode_fix()
功能:
function cleanup_shortcode_fix($content) {
$array = array('<p>[' => '[', ']</p>' => ']', ']<br />' => ']', ']<br>' => ']');
$content = strtr($content, $array);
return $content;
}
add_filter('the_content', 'cleanup_shortcode_fix');
$string = preg_replace('/<p>s*</p>/', '', $string);
add_filter('the_content', 'cleanup_shortcode_fix', 1);
来源:Remove auto added <p> from a page that has no literal content (uses shortcodes)
答案 1 :(得分:0)
只需删除新行,因为新行显示为段落。
return str_replace("\r\n", '', $content);