【问题标题】:p tag formatting in shortcode's content wordpress简码内容 wordpress 中的 p 标记格式
【发布时间】: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>

主要问题是空的&lt;p&gt;,我一直在尝试使用此处提到的这些解决方案来解决它:remove empty <p> tags from wordpress shortcodes via a php functonGithub,但这似乎解决了&lt;p&gt; 包装shortcode 而不是内容shortcode.

没有任何&lt;p&gt; 包装的第一行也有点奇怪,这让我认为我应该向简码函数添加代码?

提前感谢您的帮助。

更新

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

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>

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

【问题讨论】:

    标签: php wordpress shortcode


    【解决方案1】:

    正如我在我的问题“更新 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() 删除到仅在短代码中的内容)

    将短代码中的内容与短代码标签分开也很重要,否则第一行将不会被&lt;p&gt;标签包裹:

    [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 网站的简码,并且都具有正确的格式。希望这可以帮助一些窥视者:)

    【讨论】:

      【解决方案2】:

      你试过了吗

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-15
        • 1970-01-01
        • 2019-07-09
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        相关资源
        最近更新 更多