Disable automatic formatting inside WordPress shortcodes

后端 未结 4 683
面向向阳花
面向向阳花 2020-12-24 02:32

I\'ve seen the tutorials on creating a (raw) shortcode that leaves the code inside it untouched,

http://www.wprecipes.com/disable-wordpress-automatic-formatting-

4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-24 03:18

    I solved this as best as possible by combining a slightly modified parse_shortcode_content function from Donal MacArthur (his originally manually calls wpautop... which I've removed. With the re-ordering of default filters to run wpautop much later... after the shortcode has already been processed instead of before.

    // Clean up WordPress shortcode sormatting - important for nested shortcodes
    // Adjusted from http://donalmacarthur.com/articles/cleaning-up-wordpress-shortcode-formatting/
    function parse_shortcode_content( $content ) {
    
       /* Parse nested shortcodes and add formatting. */
        $content = trim( do_shortcode( shortcode_unautop( $content ) ) );
    
        /* Remove '' from the start of the string. */
        if ( substr( $content, 0, 4 ) == '' )
            $content = substr( $content, 4 );
    
        /* Remove '' from the end of the string. */
        if ( substr( $content, -3, 3 ) == '' )
            $content = substr( $content, 0, -3 );
    
        /* Remove any instances of ''. */
        $content = str_replace( array( '

    ' ), '', $content ); $content = str_replace( array( '

    ' ), '', $content ); return $content; }

    and moving the filters

    // Move wpautop filter to AFTER shortcode is processed
    remove_filter( 'the_content', 'wpautop' );
    add_filter( 'the_content', 'wpautop', 99);
    add_filter( 'the_content', 'shortcode_unautop', 100 );
    

    EDIT:

    The parse_shortcode_content() function is no longer required (if it ever was). Simply adjust the filter order.

提交回复
热议问题