wordpress widget addng额外的p标签

时间:2016-01-12 11:56:04

标签: wordpress

我有一个这样的简短代码:

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>对。

2 个答案:

答案 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);