wordpress小部件添加额外的p标记

wordpress小部件添加额外的p标记,wordpress,Wordpress,我有这样一个简短的代码: function requestaquote($atts, $content = null){ extract(shortcode_atts(array( 'text'=>'', 'link'=>'', 'colour'=>'' ), $atts)); return '<div class="speed-button"><img src="'.g

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

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' );
<div class="textwidget">
<p></p>
<div class="speed-button">...</div>
<p></p>
</div>
函数requestaNote($atts,$content=null){
提取(短码)附件(数组)(
'文本'=>'',
'链接'=>'',
“颜色”=>“
)美元(附件);;
返回“

”.esc_attr($text)。”

; } 添加快捷码(“quotetext”、“requestaNote”);
除了引入额外的

对外,它还能工作,如下所示:

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' );
<div class="textwidget">
<p></p>
<div class="speed-button">...</div>
<p></p>
</div>

...

这会弄乱我的格式

我尝试过
删除过滤器('the_content','wpcontop')


如何删除这些

对。

您可以将
wp\u autop
定位,因为它在短码输出之前处理:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);
或使用以下功能:

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);
function cleanup\u shortcode\u fix($content){
$array=array('['=>'[',']

'=>'],']
'=>'],']
'=>'],']
'=>']); $content=strtr($content,$array); 返回$content; } 添加过滤器(“内容”、“清理”快捷码“修复”); $string=preg_replace('/s*

/',''$string); 添加过滤器(“内容”、“清除”快捷码“修复”,1);

来源:

只需删除新行即可,因为新行似乎是要编成段落的内容

return str_replace("\r\n", '', $content);

你也可以使用插件:我认为你的清理快捷码修复功能看起来很有前途。我复制到funtions.php中,得到了一个错误:调用未定义的函数preg\u replace\u()。有什么想法吗?谢谢-我现在得到。。。preg_replace():未知修饰符“p”确定不使用
cleanup\u shortcode\u fix
函数。只需添加
remove_过滤器('the_content','wpcontop');添加_过滤器('the_content','wp autop',12)在你的functions.php文件中,并检查。谢谢你的时间,Milap-但当我尝试它时,它也不起作用。抱歉-不起作用-我想这是因为它添加在实际的ShortCode之前和之后最后一件简单的事情是使p标记显示none。虽然这不是一个完美的解决方案,但会有所帮助