WordPressビジュアルエディターを使用すると、自動的に「p」タグ「br」タグを入れてくれてありがたいこともあります。
しかし、htmlコードを直接書いて制作することもあります。
ビジュアルエディターで作成した場合に「p」タグや「br」タグを入れてくれるのだろうと思っていました。
ところが、htmlコードを直接書くテキストエディターで制作していても、「p」タグと「br」タグが勝手追加される場面がありました。
テキストエディターで制作しているので、コード上には「p」タグも「br」タグも存在しません。しかし、レイアウトが崩れてしまうので、ページのソース表示を見ると、入っていないはずの「p」タグ「br」タグが入っています。
この場合、エディターで何度調整してもダメなので、WordPress側の設定で対策するしかありません。
解決法1:functions.phpで対処する
//pタグとbrタグの自動挿入を解除
remove_filter('the_content', 'wpautop');
以上を、追加して入れましょう。
固定ページの特定のページに対応させたい場合はページIDを指定して解除する方法もあります
add_action( 'wp_head', function() {
if (is_page( array(1, 2, 3) )) {
// 本文
remove_filter('the_content', 'wpautop');
// 抜粋
remove_filter('the_excerpt', 'wpautop');
}
});
if (is_page( array(1, 2, 3) )) {
の1,2,3 の部分に対応させたいページのID入れて設定します。
解決法2:使っているテンプレートで対処する
特定のテンプレートで表示する頁だけ対処したい場合は、テンプレートにコードを追加して対処しましょう。
<?php remove_filter ('the_content', 'wpautop'); ?>
というコードを、テンプレートのループで表示させているコードに追加するとp.brタグの自動入力は行われなくなります。
設定する場所は、
<?php the_content(); ?>/*の前に*/
<!--本文ここから-->
<?php if(have_posts()): ?>
<?php while(have_posts()): ?>
<?php the_post(); ?>
<?php remove_filter ('the_content', 'wpautop'); ?>/*ここにいれる*/
<?php the_content(); ?>
<?php endwhile;?>
<?php else: ?>
<?php endif; ?>
<!--本文ここまで-->
wpautop 関数の機能をストップさせている
WordPressには、ビジュアルエディターで文章や改行を行うとpタグやbrタグを補って入力してくれる「wpautop 関数」があるのだそうです。
今回の処置は、この「wpautop 関数」を機能停止にする手続きです。
実際には便利でありがたい機能なので、全頁機能停止にするか、特定のページだけ機能停止にするかを考えて設定しましょう。