简码内容 wordpress 中的 p 标签格式

p tag formatting in shortcode's content wordpress

我知道这个问题已经被问过一百次了,但我一直在尝试一些我能找到的解决方案,但 none 似乎有效。

我有一个 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 and on Github 但是这似乎解决了 <p> 包装 [=16] =]不是shortcode.

的内容

第一行没有任何 <p> 换行也有点奇怪,这让我觉得我应该向短代码函数添加代码?

在此先感谢您的帮助。

更新

好的,这段代码看起来可以解决问题:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99);
add_filter( 'the_content', 'shortcode_unautop',100 );

如此处所示: and here: 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>

将确认它是否适用于所有简码...

正如我在我的问题中提到的,在 functions.php 中更新这段代码可以解决问题:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99);
add_filter( 'the_content', 'shortcode_unautop',100 );

正如这个问题的答案所示: and this post: 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 网站的短代码,所有短代码的格式都正确。希望这对外面的一些人有所帮助 :)

你试过这个吗

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);
}