How do I remove auto paragraph formatting for page

2019-05-07 02:09发布

I'm familiar with this little trick already for removing auto paragraph formatting in WordPress:

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

...however adding this in functions.php removes paragraphs for the entire site. This is not what I want since the client needs to be able to make edits themselves (the paragraph formatting really helps them out on posts).

Where the auto paragraph insertions are particularly damaging is on the client's home page, where there are javascript snippets. So ideally, I would like to disable auto p formatting for this page alone, or all pages if necessary, and leave posts alone.

Any ideas? I can provide more information if needed.

Thanks in advance!


Edit:

Plugins I've tried: Php Exec, Raw HTML, Disable WordPress Autop, PS Disable Auto Formatting, Toggle wpautop

3条回答
甜甜的少女心
2楼-- · 2019-05-07 02:19

You should be able to check if the template being rendered is a page using is_page(), and then optionally run the filter. We hook into 'wp_head', so that we can run the check before the_content is called.

Example:

function remove_p_on_pages() {
    if ( is_page() ) {
        remove_filter( 'the_content', 'wpautop' );
        remove_filter( 'the_excerpt', 'wpautop' );
    }
}
add_action( 'wp_head', 'remove_p_on_pages' );
查看更多
手持菜刀,她持情操
3楼-- · 2019-05-07 02:27

I suggest adding it to the theme's home.php file if you must. Ideally, just added it to the javascript file of the theme or otherwise separate the content (the homepage content) from the controller (your javascript) (e.g. including a JS file only on the homepage).

查看更多
可以哭但决不认输i
4楼-- · 2019-05-07 02:31

You can add custom category to desired page then use the category ID to disable wp_autop

//no paragraph
function no_auto_paragraph( $atts ){

  $cats = get_the_category();
  $cat  = $cats[0]->cat_ID; 

  if ($cat == 7 ){ //in my case the category is 7
    remove_filter( 'the_content', 'wpautop' );
  }

}

add_action( 'wp_head', 'no_auto_paragraph' );

//no_auto_paragraph END
查看更多
登录 后发表回答