我知道这一定要问过一百次,但我一直在尝试一些我能找到的解决方案,但似乎都没有。
我有一个包含内容的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]
内容与短代码标签分开。该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>
将确认它是否适用于所有短代码......
答案 0 :(得分:2)
正如我在我的问题中提到的更新functions.php
中的这段代码可以解决问题:
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()仅限内容以短代码形式)
将短代码中的内容与短代码代码分开也很重要,否则第一行不会包含在<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>
我已经检查了整个WordPress网站的短代码,并且所有代码都具有正确的格式。希望这有助于一些窥视:)
答案 1 :(得分:1)
你试试这个吗?
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
有关详细信息:http://codex.wordpress.org/Function_Reference/wpautop
此外,您可以在functions.php文件中添加此功能
add_filter('the_content', 'remove_empty_p', 20, 1);
function remove_empty_p($content){
$content = force_balance_tags($content);
return preg_replace('#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content);
}