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)