Grow your CSS skills. Land your dream job.

Last updated on:

Disable Automatic Formatting Using a Shortcode

function my_formatter($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', 'my_formatter', 99);

This goes in the PHP in your functions.php file. Once done, you can use the [raw] shortcode in your posts: [raw]Unformatted code[/raw]

Reference URL

Comments

  1. This is so awesome! It works perfectly. I just needed to be able to disable a small portion (some javascript) within a post from getting the always helpful “autop” and this did it! Thank you.

  2. Will
    Permalink to comment#

    This did not work…

  3. Jeff
    Permalink to comment#

    works for most part, but tags are still automatically closed at times

  4. This is spot on! I needed to remove formatting within my shortcodes, just adding:

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

    Sorted it, thanks so much! :)

Leave a Comment

Current ye@r *

*May or may not contain any actual "CSS" or "Tricks".