This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Don't Muck My Markup

Description

If you’ve ever had a WordPress blog post or page in which you found yourself writing more than a little HTML, you’ve experienced the frustration of finding your beautiful markup surrounded in <p> tags. The problem only gets worse when you start throwing jQuery into the mix. Who on earth gave WordPress permission to throw in <br/> tags inside a <script>, anyhow?!

Up until now, we’ve only had a couple of options:

  • First, we could use conditional logic to require an external PHP file. This was bad for several reasons.
    • It’s not friendly for the end user. Who wants to have to edit a PHP file?
    • The content is not in the WordPress database, which means it isn’t searchable inside the dashboard, and it isn’t backed up with the rest of the site.
    • It removes framework functionality. Robust WordPress frameworks have places to add content above and below the main post content area, and an external PHP file destroys this greatly.
  • The second option is to use the existing plugins to disable WordPress formatting, but none of these plugins empower the user to toggle this setting on a page-by-page basis. After all, most articles don’t have that much HTML in them. Nobody wants to go through 500 old blog posts and manually add <p> tags to them, do they? We didn’t think so either.

As a web designer that’s used WordPress successfully for several years, I finally decided these shenanigans had to stop once and for good. I built a simple but elegant plugin that lets you disable auto-generated HTML on a page-by-page basis.

I hope you use and enjoy Don’t Muck My Markup as much as I enjoyed building it.

Note: this plugin does not work on all WordPress themes, because some themes don’t handle the filter sequence correctly. This plugin does work for well-programmed themes such as the Twenty Fourteen theme and the Genesis Framework (and child themes).

Installation

  1. Upload this plugin to your plugins directory (wp-content/plugins/).
  2. Activate this plugin.
  3. Head over to the Edit Post interface for the specific page for which you want to disable WordPress’ auto-formatting.
  4. In the right sidebar underneath the “Featured Image” box, toggle the checkbox labeled, “Disable auto-formatting for this page/post.”
  5. Update the page/post.
  6. To disable formatting across all pages and posts, head over to Tools -> Don’t Muck My Markup.
  7. Enjoy your newfound control!

Reviews

December 9, 2019
I seldom rate any addon more, than 3 stars, but this one made my day. The most awesome feature about it is the ability to choose, on which page the auto-markup should be disabled, as I have several content editors (not developers), who use this feature, and can't disable it competely. I thank the developer of this plugin a lot.
September 11, 2019
When working with The Events Calendar the line breaks in the content of the event view get replaced as a whitespace in the front end! When disabling Don't Muck My Markup the line breaks in the front end are the same as in the backend. It would be great to have ab "enable or disable function" for different post types / custom post types - that would give the chance to exclude these post types but use the plugin for the rest of the site.
December 19, 2018
Thank you, thank you, thank you! Where have you been the last five miserable years of my WP life? Even the name of this plugin is awesome. Martyn, how do we get you on the WP board of directors so we can build this basic functionality into WP core?
May 9, 2018
Thank you so much for this plugin. I knew right away...when I saw the clever title..."Don't Muck My Markup", that this was surely what I've been looking for and is now an essential tool in my WordPress arsenal. So far works perfectly...I think. Man...I was using a tool years ago that helped but stopped working. Then I used a feature in the TinyMCE Advanced editor plugin which also recently seems to not fully help. Then this DMMM plugin did the trick. WTF with the WordPress auto correction crap. Switching from visual composer to plain text and back always cause addition or subtraction of code. WP tries to correct my delicate well thought out html and destroys it lol. NOTE....I needed to disable the TinyMCE editor preserve code feature because it clashed with your plugin....starts to add weird code over and over as I switch views or save. Cheers
Read all 17 reviews

Contributors & Developers

“Don't Muck My Markup” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Don't Muck My Markup” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.8

  • Removed some styling from the admin dashboard that was no longer necessary.

1.7

  • PHP 4 style constructors (methods that have the same name as the class they are defined in) are deprecated in PHP 7, and this update fixes the warning about this that you get when you’ve set define('WP_DEBUG', true); in your wp-config.php file.

1.6

  • Minor wording change on the settings page to clarify the user options
  • Tested with latest version of WordPress, v4.6.1

1.5

  • Added the full opening to <?php tags to accommodate old servers.
  • Tested with latest version of WordPress, v4.4.2

1.4

  • Adding a new feature that allows users to disable auto formatting across their entire site with the click of a button.

1.3

  • Buxfixes
    • Updated function as static in main file.
    • Checked for is_post() before getting post ID to determine if a given page load should be un-mucked or not.
    • Update the description because parts of it were sounding a little archaic.

1.2

  • Bugfixes
    • Discovered that autosaving was what messed everything up. When a post autosaves, custom meta boxes get reset unless you provision this. Finally bug free.

1.1

  • Bugfixes
    • Added white space so that checked=”checked” should no longer be buggy