remove_filter ( 'the_content', 'wpautop' );
は、自動的にP要素を追加する機能を停止したいときに、よく紹介されるコードですが
動作しなかったので、代替のコードを考えてみました。
固定ページで、p要素が追加されないようになります(投稿は、通常通り追加されます)
functions.phpの先頭(<?phpの前に)以下を追加します
<?php add_filter( 'the_content', 'wpautop2', 5 ); add_filter( 'the_content', 'wpautop3',11 ); function wpautop2( $content ) { if ( is_page() ) { return str_replace( array('<p>', '</p>',"\n",), array('<p class="paragraph">','</p class="paragraph">', '' ), $content ); } } function wpautop3( $content ) { if ( is_page() ) { return str_replace( array( "<p>", "</p>" , '<p class="paragraph">','</p class="paragraph">'), array( '','','<p>','</p>'), $content ); } } ?>
class=”paragraph”のところは、もともと投稿本文に入力済みのp要素が削除されないように、いったん置換して、その後元に戻すという処理をしています。
改行を削除することで、wpautopがp要素を追加する目印を消すというのがみそですが、これだけだと、div要素の内側にpが追加されたりすることになるので、2番目のフィルタで、p要素を削除しています。
- http://ja.forums.wordpress.org/topic/120362?replies=3(@source)