删除空 通过一个PHP functon从WordPress的简码标签(remove empty

2019-08-03 02:10发布

寻找一个PHP函数(非jQuery的或wpautop修改)的方法来除去<p></p>从WordPress的范围内。

我试过,但它不工作:

        function cleanup_shortcode_fix($content) {   
          $array = array (
            '<p>[' => '[', 
            ']</p>' => ']', 
            ']<br />' => ']',
            ']<br>' => ']'
          );
          $content = strtr($content, $array);
            return $content;
        }
        add_filter('the_content', 'cleanup_shortcode_fix');

Answer 1:

尝试在你插入这段代码functions.php文件:

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


Answer 2:

add_filter('the_content', 'cleanup_shortcode_fix', 10);

我发现,如果指定10作为优先它的工作原理; 没有其他的号码会工作。



Answer 3:

这是一个老问题,但我解决了这个今天我想我会分享。

就我而言,我基本上要删除所有格式混乱<p><br>标签,但你要他们正确地添加回去,这样的简码的文本被正确格式化。

/*
 * Half column shortcode
 */
    function custom_shortcode_half_column( $atts, $content = '') {
        $content = custom_filter_shortcode_text($content);
        return '<div class="half-column">'. $content .'</div>';
    }
    add_shortcode( 'half-column', 'custom_shortcode_half_column' );


/*
 * Utility function to deal with the way WordPress auto formats text in a shortcode.
 */
    function custom_filter_shortcode_text($text = '') {
        // Replace all the poorly formatted P tags that WP adds by default.
        $tags = array("<p>", "</p>");
        $text = str_replace($tags, "\n", $text);

        // Remove any BR tags
        $tags = array("<br>", "<br/>", "<br />");
        $text = str_replace($tags, "", $text);

        // Add back in the P and BR tags again, remove empty ones
        return apply_filters('the_content', $text);
    }

这确实应该是默认的方式WordPress的分析在我看来,简码$内容参数。



Answer 4:

也许正则表达式可以工作:

$string=preg_replace_('/<p>\s*</p>/', '', $string);

应该替换任何<p></p>什么也没有或只是在空格它没什么,从而消除它们。

当应用正则表达式来HTML代码,这是一个好主意,删除\r\n第一的HTML,因为他们停止工作的正则表达式。



Answer 5:

您应该增加过滤器的优先级。

这应该工作

add_filter('the_content', 'cleanup_shortcode_fix', 1);


Answer 6:

您可以删除

标签进入

<?php echo $post->post_content; ?>

代替the_content()



Answer 7:

你需要的是jQuery和PHP的混合......这是唯一的工作方式
我发现是工作得很好。 我有教程在我的网站,但
为了保持室内的东西在这里不用

jQuery的:
这包括在一些JS文件,你已经入队

jQuery(function($){
    $('div#removep > p').filter(function() {
        return $.trim($(this).text()) === '' && $(this).children().length == 0
    })
    .remove()
})

一个简码,您可以在以后使用:
在你的functions.php或包含文件

function sght_removep( $atts, $content = null ) {return '<div id="removep">'.do_shortcode($content).'</div>';}
add_shortcode('removep', 'sght_removep');

现在,你可以用这样的具体的东西:

[removep]
Some text i write directly in wordpress wysiwyg
<p></p> <-- this would get removed
[/removep]

这种解决方案需要一些懂得,但它的工作原理!
希望这可以帮助...



文章来源: remove empty

tags from wordpress shortcodes via a php functon