WordPressのエディタは改行すると<br>
タグ、1行あけて改行すると<p>
タグが入ります。
この機能は /wp-includes/default-filters.php にwpautop関数がフィルターフックされていることで自動整形機能が働くことによるものです。
add_filter( 'the_content', 'wpautop' );
これはHTMLの知識なく行った更新でも、正しいタグが追加されるという親切な部分もありますが、テーマを自由に制作するような場合には、この機能はちょっと邪魔になります。特にテキストエディタからビジュアルエディタに切り替えるだけで自動整形されてしまうのはクライアントから委託制作を行うWEB制作者にとっては見過ごせません。
そのため、この自動整形機能を制御する必要があリます。
簡単に考えれば、/wp-includes/default-filters.php にある該当のソースをコメントアウトすれば停止できますが、コアアップデートの度にチェックするのは面倒なので、別の方法で制御します。
functions.phpを使って制御
functions.phpに次のように追記してwpautop関数を除去します。
remove filter( 'the_content', 'wpautop' );
/wp-includes/default-filters.phpでは記事だけではなく、抜粋(the_excerpt)やコメント(comment_text)も自動整形されているので、そっちも必要に応じて制御できます。
remove filter( 'the_content', 'wpautop' ); remove_filter('the_excerpt', 'wpautop'); remove_filter('comment_text', 'wpautop');
テンプレート毎に個別制御
single.phpやpage.phpのループ内で使われているテンプレートタグ<?php the_content(); >
の直前にremove filterを追記することで個別に制御できます。
<?php remove_filter('the_content', 'wpautop'); ?> <?php the_content(); ?>