WordPressで自動挿入されるタグ<p>や<br>を除去する方法

11 min to read

WordPressで自動挿入されるpタグやbrタグを除去する方法を、状況別に6つ紹介し解説します。

WordPressの投稿ページや固定ページを編集して、いざプレビューで確認してみると、なぜかデザインが崩れてしまっていることがありますよね。デベロッパーツールなどでコードを確認してみると、なぜか勝手にpタグやbrタグが入っていることがあるのです。

実はこれ、WordPressにデフォルトで実装されているオートパラグラフという機能によるものなのです。より細かい部分までデザインしたい人にとっては余計な機能ですよね。過去に僕もこの機能のせいで何時間も苦戦した経験があります。

というわけで、今回は自動挿入されるpタグ、brタグを除去するための設定方法を解説します。一度設定すれば良いだけなので、ぜひ取り組んでみてください。

自動挿入されるpタグ、brタグを除去する方法

やり方はいくつかあり、状況によって使い分けるのが良いでしょう。というわけで、状況別にやり方を解説していきます。

パターン1. すべての投稿に適用させる場合

まずはすべての投稿(投稿ページ、固定ページ、カスタム投稿ページ)に対して、自動挿入されるpタグ、brタグを除去する方法です。基本的にはこのパターンがほとんどだと思います。

手順としては、WordPress管理画面から「外観 > テーマの編集」ページを開き、「functions.php」ファイルを選択し、「functions.php」内に下記のコードを追加するだけでOKです。

functions.php

remove_filter('the_content', 'wpautop'); // 記事の自動整形を無効にする
remove_filter('the_excerpt', 'wpautop'); // 抜粋の自動整形を無効にする

パターン2. 投稿ページのみに適用させる場合

次は投稿ページのみに対して、自動挿入されるpタグ、brタグを除去するための設定方法です。固定ページやカスタム投稿ページには適用させたくなく、投稿ページのみに適用させたい場合にこの方法を使用してください。

手順としては、WordPress管理画面から「外観 > テーマの編集」ページを開き、「functions.php」ファイルを選択し、「functions.php」内に下記のコードを追加するだけでOKです。

functions.php

add_filter('the_content', 'wpautop_filter', 9);
function wpautop_filter($content) {
global $post;
$remove_filter = false;
$arr_types = array('post'); //適用させる投稿タイプを指定
$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;
}

パターン3. 固定ページのみに適用させる場合

次は固定ページのみに対して、自動挿入されるpタグ、brタグを除去するための設定方法です。投稿ページやカスタム投稿ページには適用させたくなく、固定ページのみに適用させたい場合にこの方法を使用してください。

手順としては、WordPress管理画面から「外観 > テーマの編集」ページを開き、「functions.php」ファイルを選択し、「functions.php」内に下記のコードを追加するだけでOKです。

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;
}

パターン4. カスタム投稿ページのみに適用させる場合

次はカスタム投稿ページのみに対して、自動挿入されるpタグ、brタグを除去するための設定方法です。投稿ページや固定ページには適用させたくなく、カスタム投稿ページのみに適用させたい場合にこの方法を使用してください。

手順としては、WordPress管理画面から「外観 > テーマの編集」ページを開き、「functions.php」ファイルを選択し、「functions.php」内に下記のコードを追加し、下記コード内の「★カスタム投稿タイプをここに入力★」という部分を、適用させたいカスタム投稿タイプに置き換えればOKです。

functions.php

add_filter('the_content', 'wpautop_filter', 9);
function wpautop_filter($content) {
global $post;
$remove_filter = false;
$arr_types = array('★カスタム投稿タイプをここに入力★'); //適用させる投稿タイプを指定
$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;
}

パターン5. 複数の投稿タイプに適用させる場合

次は複数の投稿タイプに対して、自動挿入させるpタグ、brタグを除去するための設定方法です。

パターン2〜4では特定の一つの投稿タイプに対して適用させる方法でしたが、こちらでは複数の投稿タイプに適用させる方法の解説です。

例えば、投稿ページと固定ページに適用させたい場合、固定ページとカスタム投稿ページに適用させたい場合、複数のカスタム投稿ページに適用させたい場合などにはこちらの方法を使用してください。

手順としては、WordPress管理画面から「外観 > テーマの編集」ページを開き、「functions.php」ファイルを選択し、「functions.php」内に下記のコードを追加し、下記コード内の「★投稿タイプ1(2、3)★」という部分を、それぞれ適用させたい投稿タイプに置き換えればOKです。

functions.php

add_filter('the_content', 'wpautop_filter', 9);
function wpautop_filter($content) {
global $post;
$remove_filter = false;
$arr_types = array('★投稿タイプ1★', '★投稿タイプ2★', '★投稿タイプ3★'); //適用させる投稿タイプを指定
$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;
}

■ 例

例えば、カスタム投稿ページには適用させず、投稿ページと固定ページのみに適用させたい場合は、以下のようなコードになります。

functions.php

add_filter('the_content', 'wpautop_filter', 9);
function wpautop_filter($content) {
global $post;
$remove_filter = false;
$arr_types = array('post', '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;
}

パターン6. 個別に適用させる場合

場合によっては、固定ページごとにテンプレートが異なることもありますよね。すべての固定ページには適用させたくないけど、その中でも特定のテンプレートには適用させたい場合にはこちらの方法を使用してください。

手順としては、まず適用させたいテンプレートファイルを開き、その中から下記のコードを探します。

<?php the_content(); ?>

上記のコードを見つけたら、その直前に下記のコードをコピペしてください。

<?php remove_filter('the_content', 'wpautop'); ?>

すると、以下のようになるかと思います。

<?php remove_filter('the_content', 'wpautop'); ?>
<?php the_content(); ?>

あとは保存して適用させればOKです。

最後に

今回は、WordPressで自動挿入されるpタグやbrタグを除去する状況別の方法を解説しました。

以上のようにとても簡単にできるので、ぜひ参考にしながらやってみてください。

\ 記事が良かったらシェア! /

むらかこうすけ

むらかこうすけ

フリーのソフトウェアエンジニア.

Web アプリ, スマホアプリの開発が得意で, 今はゲームに関するプロダクトを仲間とともに開発しています.

ゲーム, 旅行がめちゃくちゃ好きです.

当ブログは Gatsby を用いて構築した完全自作ブログです.

UPDATE