Disable wpautop() – with/without plugins

How To Disable Automatic Paragraph Tags (With and Without Plugin)

How To Disable Automatic Paragraph Tags (With and Without Plugin)

If you are familiar with the formatting of posts and pages in WordPress, you may have already noticed that WordPress separates paragraphs with automatically inserted <p> tags. However, this can sometimes lead to problems. The good news is… this automatic formatting can be deactivated by inserting simple code snippets.

Wpautop is the name of the function that automatically encloses double-line breaks with a <p> and </ p>. WordPress uses this feature in all post types (posts, pages and custom post types)- for both content and shortcode generated texts. Hence, some of the editing jobs such as working with a shortcode-driven grid system in the WYSIWYG editor can be quite problematic.

Disable Automatic P-tags

The wpautop filter can be disabled by following a few simple steps. The following lines need to be inserted in the functions.php of your theme (child theme is preferred). Once correctly inserted, WordPress will not automatically insert the p-tag to posts and excerpts.

“`
remove_filter (‘the_content’, ‘wpautop’);
remove_filter (‘the_excerpt’, ‘wpautop’);
“`

Disable Wpautop on Certain Pages

If you want to disable this feature on a specific page only, use the following code snippet instead. In line 3 you should specify the name or the ID of the particular page.

“`
add_filter (‘the_content’, ‘specific_no_wpautop’, 9);
function specific_no_wpautop ($ content) {
if (is_page (‘name of page’)) {
remove_filter (‘the_content’, ‘wpautop’);
return $ content;
} else {
return $ content;
}
}
“`

Disable Wpautop in Custom Post Types

Use the following code snippet to disable automatic p-tags in custom post types:

“`
add_filter( ‘the_content’, ‘disable_wpautop_cpt’, 0 );
function disable_wpautop_cpt( $content ) {
‘custom_post_slug’ === get_post_type() && remove_filter( ‘the_content’, ‘wpautop’ );
return $content;
}
“`

Disable Wpautop and List Exceptions

Here’s an enhanced version of the code snippet that allows you to list exceptions if there’s any:

“`


/* Allow or remove wpautop based on criteria */

function conditional_wpautop($content) {
    // true  = wpautop is  ON  unless any exceptions are met
    // false = wpautop is  OFF unless any exceptions are met
    $wpautop_on_by_default = true;

    // List exceptions here (each exception should either return true or false)
    $exceptions = array(
        is_page_template('page-example-template.php'),
        is_page('example-page'),
    );

    // Checks to see if any exceptions are met // Returns true or false
    $exception_is_met = in_array(true, $exceptions);

    // Returns the content
    if ($wpautop_on_by_default==$exception_is_met) {
        remove_filter('the_content','wpautop');
        return $content;
    } else {
        return $content;
    }
}
add_filter('the_content', 'conditional_wpautop', 9);
<h2>Remove Empty Paragraphs Already Added by WordPress</h2>
<p>Copy-paste this into your functions.php file (source – <a href="https://gist.github.com/Fantikerz/5557617" target="_blank" rel="noopener">GitHub</a></p>
<p>
/*
Remove empty paragraphs created by wpautop()
@author Ryan Hamilton
@link https://gist.github.com/Fantikerz/5557617
 */
 
function remove_empty_p( $content ) {
	$content = force_balance_tags( $content );
	$content = preg_replace( '#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content );
	$content = preg_replace( '~\s?<p>(\s| )+</p>\s?~', '', $content );
	return $content;
}
add_filter('the_content', 'remove_empty_p', 20, 1);
</p>

Disable Automatic Paragraph Tags with Plugin

Here’s a few plugins that offer you can use to disable p tags:

  1. Toggle wpautophttps://wordpress.org/plugins/toggle-wpautop/
  2. Disable Automatic P Tagshttps://wordpress.org/plugins/disable-automatic-p-tags/
  3. Empty P Taghttps://wordpress.org/plugins/empty-p-tag/
Scroll to Top