WordPressで連続改行をそのまま適用する方法

作成日:

WordPressのエディターで連続改行しても1つの改行としてしか認識してくれません。

[html]テキスト
テキスト

テキスト[/html]

は、[html]

テキスト
テキスト

テキスト

[/html]

のようになります。
しかし、表示として望ましいのはこちらです。[html]

テキスト
テキスト

{空白改行}
{空白改行}

テキスト

[/html]

そこで、以下のようにカスタマイズして対応してみました。[php]global $post;
$content = $post->post_content;
$content = preg_replace( '/^\r\n/m', '

' . PHP_EOL, $content );
echo apply_filters( 'the_content', $content );[/php]

解説:
通常WordPressで本文を出力する際は、the_content()get_the_content()を使用しますが、このままだとwpautopが処理された状態での出力になりますので、$post->post_contentで未処理の本文データを取得します。

そして、preg_replaceを用いて空白改行(^\r\n)を'<div class="py-3" aria-hidden="true"></div>' . PHP_EOLで正規表現置換します。divのクラスは任意に調整して下さい。ここではBootstrapのクラスpy-3(padding-bottom:1rem;)を追加しています。
aria-hidden="true"は「これは意味の無いコードだよー」という意味合いで追加しています。不要かもしれませんが。

最後にapply_filters( 'the_content', $content )で、the_content()get_the_content()で出力される際に適応される処理を行います。

これで[html]

テキスト
テキスト

テキスト

[/html]

と、理想通りの出力が得られます。

物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。