我知道这一定要问过一百次,但我一直在尝试一些我能找到的解决方案,但似乎都没有.
[important_note]Lorem ipsum dolor sit amet,consectetur adipiscing elit. Nam vel velit at ex congue aliquet.[/important_note]
function important_note( $atts,$content = null ) { return '<div class="imp-note">'.$content.'</div>'; } add_shortcode("important_note","important_note");
<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>包装短代码而不是短代码的内容.
第一行没有任何< p>包装有点奇怪,这让我觉得我应该在短代码函数中添加代码?
在此先感谢您的帮助.
UPDATE
好吧所以这段代码看起来像诀窍:
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()仅限短代码中的内容)
[important_note] Lorem ipsum dolor sit amet,consectetur adipiscing elit. Nam vel velit at ex congue aliquet. [/important_note]
内容与短代码标签分开.该shortcode输出以下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>
将确认它是否适用于所有短代码…
正如我在我的问题更新中提到的那样,在functions.PHP中的这段代码可以解决问题:
原文链接:https://www.f2er.com/php/137057.htmlremove_filter( 'the_content',100 );
正如在这个问题的答案中看到的:https://stackoverflow.com/a/21460343/1275525和这篇文章:http://www.paulund.co.uk/remove-line-breaks-in-shortcodes(向下滚动到:删除wpautop()仅限短代码中的内容)
将短代码中的内容与短代码标签分开也很重要,否则第一行将不包含在< p>中.标签:
[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>