删除WordPress中的自动p标记

时间:2017-06-14 08:49:02

标签: wordpress

最重要的是,我已经找到了一种方法来完成这项工作。但它仍然存在。

所以我使用主题广告素材,我已经联系表单,使用联系表格7完成。并且要在正确的位置显示它,它需要放在小部件中。

我已将表单的短代码插入文本小部件,短小部件的小部件以及Contact Form 7的小部件中。

对于每种情况,输入和标签都包含在p标签中,我猜它会制动提交功能。

所以我尝试了一些功能来禁用此功能。

在我的function.php中,最后:

//* Disable automatic p tag insertion
remove_filter( 'the_content', 'wpautop' );
remove_filter('the_excerpt', 'wpautop');
add_filter( 'the_content', 'disable_wpautop_cpt', 0 );
function disable_wpautop_cpt( $content ) {
  'your_cpt_slug' === get_post_type() && remove_filter( 'the_content', 'wpautop' );
return $content;
}

在我的wp-config.php中,最后也是:

/** Disable automatic p tag insertion */
define( 'WPCF7_AUTOP', false );

此外,我添加了一个插件,用于在表单所在的页面上禁用WP的这个功能。

但标签仍在那里。帮助

编辑:添加了屏幕。

Form code

HTML in inspector

3 个答案:

答案 0 :(得分:0)

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

然后在你的帖子编辑器上用原始短代码包装你的联系表格7短代码 e.g。

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

答案 1 :(得分:0)

使用wpautop过滤器删除内容中的自动p标记或the_excerpt

<?php wpautop( $foo, $br ); ?> 

示例:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

更多参考:https://codex.wordpress.org/Function_Reference/wpautop

答案 2 :(得分:0)

您也可以使用JS。上面的代码将帮助您从页面中删除所有空的p标签

jQuery('p:empty').remove();