remove_filter ( ‘the_content’, ‘wpautop’ ) が動作しないときに

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)

[emulsion_relate_posts]