Wordpressの編集画面でpタグの自動挿入を解除する方法
Wordpressの編集画面でpタグの自動挿入を解除する方法
Wordpressの投稿・固定ページの画面における小技です。
基本仕様となるpタグの自動挿入機能が邪魔になる場合に、その機能を停止する方法です。
この自動挿入解除指定は以下の様に様々な指定ができます。
・固定ページのみ
・投稿ページのみ
・固定ページのテンプレート別
・複数の投稿タイプ
バージョン4系の編集画面
バージョン5からは新しい編集画面になりますが、それ以前の編集画面に慣れている人が多いと思います。
本文やタグを入れる欄は「ビジュアル」と「テキスト」のタブに分かれていますよね。
特にWEBサイトの各コンテンツページは、固定ページにタグを入れて作る事が多いはずです。
「テキスト」のタブの方を開いて、HTMLタグ入りのコードをコピペしたり直接入力したりします。
※それに対して「ビジュアル」タブの方はWordの様な文章入力が中心ですね。
HTMLページのWordpress化の際に起こる事
案件の中には、デザイン元となるHTMLページの通りにWordpressサイトにリニューアルする事がよくあります。
本来はHTMLページのデザイン通りにWordpress化する事ができます。
しかし固定ページにコンテンツのタグコードをそのまま入れても、表示がずれる事がよくあります。
この原因の中で一番多いのが、pタグが自動で挿入されてしまう事です。
pタグが自動で入る仕様
Wordpressの編集画面は、自動的にタグが挿入される機能が付いています。
その機能が駆使される事で、直接タグを入れなくてもいいようにサポートされているのが「ビジュアル」タブですね。
これは「テキスト」タブの方でも同じような事が言えます。
2個の改行でpタグが入る
一般的にEnterなどで改行を2個以上入れると、自動でpタグが入る仕様になっています。
この仕様がそのままだと、HTMLページで構成したタグをそのまま固定ページにコピペした際、pタグが入り込んでしまう場合があるのです。
自動でpタグが入ってしまう事が、表示ズレの原因の一つなのですね。
後からチェックしてpタグが入った箇所を消せば問題はないのですが、この自動挿入機能を停止させておけば手間が掛かりません。
自動挿入されるpタグを挿入させないようにする
そこで本記事では、pタグを自動挿入させない様にする方法をご紹介します。
これには主に、以下2つの方法があります。
自動挿入を解除する方向性
・全ての投稿と固定ページでpタグを自動挿入させない方法
・pタグを自動挿入させないページを個別指定する方法
それぞれ非常に簡単にできますので、すぐに設定できます。
固定・投稿ページ共に自動挿入を解除する
方法はいたって簡単です。以下のコードをfunctions.phpにコピペするだけです。
add_action('init', function() { remove_filter('the_excerpt', 'wpautop'); remove_filter('the_content', 'wpautop'); }); add_filter('tiny_mce_before_init', function($init) { $init['wpautop'] = false; $init['apply_source_formatting'] = ture; return $init; });
このコードをコピペすれば、固定・投稿ページのどちらも、pタグは自動挿入されなくなります。
自動挿入解除を個別に指定する
例えば固定ページ毎に違うテンプレートを使っていて、そのテンプレートによってはpタグ挿入を解除したいというケースです。
そんな時は、以下のコードをそのテンプレートファイル上のpタグの自動挿入を停止させたい箇所の直前に貼りましょう。
該当テンプレートphpファイル内
<?php remove_filter('the_content', 'wpautop'); ?> 以下に下の様なコードが続きます <?php the_content(); ?> //この本文を入れる直前に入れる
特定の投稿タイプでpタグの自動挿入を停止させる方法
例えば固定ページのみpタグの自動挿入を停止させたいケースの場合、以下のコードをfunctions.phpに貼りましょう。
add_filter('the_content', 'wpautop_filter', 9); function wpautop_filter($content) { global $post; $remove_filter = false; $arr_types = array('page'); $post_type = get_post_type( $post->ID ); if (in_array($post_type, $arr_types)) $remove_filter = true; if ( $remove_filter ) { remove_filter('the_content', 'wpautop'); remove_filter('the_excerpt', 'wpautop'); } return $content; }
上記を貼ると「固定ページのみ」pタグの自動挿入が解除されます。
コードの解説
$arr_types = array('page');
上記の'page'の部分が、pタグの自動挿入を停止させたい投稿タイプとなります。
投稿ページのみ停止させるなら、'single'と入れる訳ですね(あまりこの必要は無いと思いますが)。
複数の投稿タイプを指定する場合は、以下の様に複数設定すればOKです。
$arr_types = array('page','○○','○○');
'○○'の部分に投稿タイプを指定しましょう。