【发布时间】:2015-07-03 22:59:01
【问题描述】:
我知道这肯定被问过一百次了,但我一直在尝试一些我能找到的解决方案,但似乎都没有。
我有一个包装内容的shortcode:
[important_note]Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nam vel velit at ex congue aliquet.[/important_note]
我在functions.php 中使用以下简码函数:
function important_note( $atts, $content = null ) {
return '<div class="imp-note">'.$content.'</div>';
}
add_shortcode("important_note", "important_note");
这是生成的 html 代码:
<div class="imp-note">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<p></p>
<p>Nam vel velit at ex congue aliquet.</p>
</div>
主要问题是空的<p>,我一直在尝试使用此处提到的这些解决方案来解决它:remove empty <p> tags from wordpress shortcodes via a php functon 和Github,但这似乎解决了<p> 包装shortcode 而不是内容shortcode.
没有任何<p> 包装的第一行也有点奇怪,这让我认为我应该向简码函数添加代码?
提前感谢您的帮助。
更新
好的,这段代码看起来可以解决问题:
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99);
add_filter( 'the_content', 'shortcode_unautop',100 );
如下所示:https://stackoverflow.com/a/21460343/1275525 和此处:http://www.paulund.co.uk/remove-line-breaks-in-shortcodes(仅在短代码中将 wpautop() 删除为内容)
AND短代码中的内容必须是这样的,而不是我上面显示的:
[important_note]
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nam vel velit at ex congue aliquet.
[/important_note]
内容与短代码标签是分开的。该短代码输出以下 html:
<div class="imp-note">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Nam vel velit at ex congue aliquet.</p>
</div>
将确认它是否适用于所有短代码...
【问题讨论】: