WordPressで記事を書いていると、保存したタイミングなどで勝手に<p>や<br>が挿入されてしまい、デザインが崩れてしまったり余白が大きく空いてしまい見た目が悪くなってしまう場合があります。
こちらの記事では、自動整形される原因についてと自動整形を無効化し改行や段落させない方法についてまとめています。
- サイト運営に必須のことが学べる
- 基本的な使い方~オリジナルテーマ開発まで学べる
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
変数名/関数名にもう悩まない!
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
自動整形される原因はwpautop()関数
自動整形されてしまう原因を調査したところ、formatting.phpファイルに記述されているwpautop()関数が原因であることが分かりました。
このwpautop()は、エディタで入力されたテキストに対して自動で<p>や<br>を挿入して調整する役割の関数です。
remove_filter()関数を使って自動整形を無効化しよう
wpautop()関数で自動整形されている場合でもremove_filter()関数を使うことで、自動整形を止めることができます。
remove_filter()関数を使って全てのページに適用させる場合と個別ページにのみ適用させる場合の2つをご紹介します。
全てのページに適用させる場合
全てのページに自動整形を無効化したい場合は、以下の形式をfunction.phpに記述します。
<?php
remove_filter('the_content', 'wpautop'); // 記事の自動整形を無効にする
remove_filter('the_excerpt', 'wpautop'); // 抜粋の自動整形を無効にする
?>
一部のページに適用させる場合
一部のページにのみ適用させたい場合は、以下の形式をfunction.phpに記述します。
注意点として、全てのページで自動整形を無効化する場合はソースコードをコピペするだけで良いのですが、一部のページにのみ適用させる場合は6行目に自動整形を無効にする投稿タイプを記述する必要があります。
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;
}
まとめ
今回はWordPressの自動整形を無効化し改行や段落させない方法について解説しました。
cssを使ってオリジナルのデザインを作成している人は、この自動整形を無効化させないとデザイン崩れが発生する原因になるので早めに対応しましょう。