【问题标题】:Contact Form 7 auto added p tags联系表格 7 自动添加 p 标签
【发布时间】:2015-12-08 23:38:43
【问题描述】:

我在联系表格 7 编辑器中有下一个代码

<div class="row">
    <div class="col-sm-8 col-sm-offset-2">
        <div class="row">
            <div class="col-sm-4">
                [text* name class:border-field placeholder "Name"]
            </div><!-- End of col -->
            <div class="col-sm-4">
                [email* email class:border-field placeholder "Email"]
            </div><!-- End of col -->
            <div class="col-sm-4">
                [text subject class:border-field placeholder "Subject"]
            </div><!-- End of col -->
        </div><!-- ENd of row -->
    </div><!-- End of col -->
</div><!-- ENd of row -->

<div class="row">
    <div class="col-sm-8 col-sm-offset-2">
        [textarea message class:border-field placeholder "Message"]
    </div>
</div><!-- End of row -->

<div class="row text-center">
    <div clas s="col-sm-12">    
        [submit class:btn class:btn-black-fill class:btn-small "Submit"]  
    </div><!-- End of col -->
</div><!-- End of row -->

问题在于它几乎在每个元素之后添加了随机 p 标签,而且当它们都应该是内联时,由于某种原因,第一个文本字段略高于其他两个字段。而且我认为这不是 css 问题,因为以前我在平面 HTML 中对此进行了编码,并且所有字段都是内联的,所以我认为它必须与联系表单 7 相关。

【问题讨论】:

    标签: wordpress contact-form-7


    【解决方案1】:

    在你的functions.php文件中添加这个

    function reformat_auto_p_tags($content) {
        $new_content = '';
        $pattern_full = '{(\[raw\].*?\[/raw\])}is';
        $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
        $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);
        foreach ($pieces as $piece) {
            if (preg_match($pattern_contents, $piece, $matches)) {
                $new_content .= $matches[1];
            } else {
                $new_content .= wptexturize(wpautop($piece));
            }
        }
    
        return $new_content;
    }
    
    remove_filter('the_content', 'wpautop');
    remove_filter('the_content', 'wptexturize');
    
    add_filter('the_content', 'reformat_auto_p_tags', 99);
    add_filter('widget_text', 'reformat_auto_p_tags', 99);
    

    然后在您的帖子编辑器中使用 raw 短代码包装您的联系表格 7 短代码

    例如

    [raw][contact-form-7 id="1" title="Contact Us"][/raw]
    

    【讨论】:

      【解决方案2】:

      根据Contact Form 7 Docs,您可以通过在wp-config.php中放置以下常量来禁用插件的“wpautop”:

      define( 'WPCF7_AUTOP', false );
      

      【讨论】:

      • 指定一个小细节很重要。将其添加到根 wp-config.php 不会执行任何操作,但将其添加到 /wp-content/plugins/contact-form-7/wp-contact-form-7.php 中的实际 Contact Fomr 7 插件会起作用。唯一的问题是它可能会在下一次更新时消失。否则很好的答案! +1
      • @LuisBrazilva 我不确定你的意思是它“什么都不做” - 将此代码放在我的根 wp-config.php 文件中会按预期抑制输出。
      • @LuisBrazilva 如果您将 sn-p 放在 wp-config.php 文件中的“Authentification Unique Keys and Salts”的正下方,它可以正常工作。将它放在 wp-config.php 文件的底部是行不通的 - 正如您自己已经意识到的那样。
      • 对于那些在 2018 年来到这里的人,请参阅 skip405 的回答以在 functions.php stackoverflow.com/a/49025096/3596962 中更改此内容
      • 谢谢@Ian。我会在这里留下我原来的答案,但建议改用skip405的答案。我认为现在使用过滤器更有意义。
      【解决方案3】:

      如果编辑wp-config.php 不适合您,那么有一个方便的过滤器。把它放在你的functions.php

      // Remove <p> and <br/> from Contact Form 7
      add_filter('wpcf7_autop_or_not', '__return_false');
      

      【讨论】:

      【解决方案4】:

      关于这个我想说点什么,当我们想要减少自动 P 标记形式时,我们应该使用下面的过滤器,只需在 function.php 中编写打击代码。

      add_filter('wpcf7_autop_or_not', '__return_false'); 
      

      【讨论】:

        【解决方案5】:

        我尝试了很多答案,但没有任何效果所以...
        我最终使用简单的 CSS 专门针对空 P 标签
        在表单本身中是这样的:

        .wpcf7-form p:empty { display: none; }
        

        这对我有用,而且是一个简单的解决方案。

        【讨论】:

        • 答案,使用filterwp-config 应该是被接受的,这只是一个拼凑。
        • 但是您的回答会删除所有段落标签。这在我的情况下产生了一个新问题。问题是空的 p 标签创建了间距(和阻塞)。这样您就可以(轻松地)处理一个空的 p 标签。使用这种方式,您可以定位特定的表单。所以,“kludge”与否;)。这行得通。
        【解决方案6】:

        这也有效。使用 WordPress 5.7、PHP 7.4、Contact Form 7 v5.4 测试。

        <?php
        add_filter('wpcf7_autop_or_not', false);
        

        可能存在需要使用__return_false 实用函数的情况(旧版本的WP、PHP?)。

        【讨论】:

        • 我分享了一个更简单且有效的替代解决方案,同时承认可能存在不合适的情况。这完全符合如何回答的准则。如果你的评论应该是建设性的,你真的需要阅读stackoverflow.com/help/behavior
        • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为何解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案添加解释并说明适用的限制和假设。
        • 感谢分享!我认为这里没有必要对 wordpress 过滤器的工作原理进行冗长的解释。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 2016-01-08
        • 2016-07-28
        • 2021-07-29
        • 2020-06-13
        • 2017-09-30
        相关资源
        最近更新 更多