短代码内容wordpress中的p标签格式

时间:2015-04-25 08:14:39

标签: php wordpress shortcode

我知道这一定要问过一百次,但我一直在尝试一些我能找到的解决方案,但似乎都没有。

我有一个包含内容的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 functonGithub然而这似乎解决了<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>

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

2 个答案:

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