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

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



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

テキスト
テキスト


テキスト

は、

<p>テキスト<br />
テキスト</p>
<P>テキスト</p>

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

<p>テキスト<br />
テキスト</p>
{空白改行}
{空白改行}
<P>テキスト</p>

そこで、以下のようにカスタマイズして対応してみました。

global $post;
$content = $post->post_content;
$content = preg_replace( '/^\r\n/m', '<div class="py-3" aria-hidden="true"></div>' . PHP_EOL, $content );
echo apply_filters( 'the_content', $content );

解説:
通常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()で出力される際に適応される処理を行います。

これで

<p>テキスト<br />
テキスト</p>
<div class="py-3" aria-hidden="true"></div>
<div class="py-3" aria-hidden="true"></div>
<P>テキスト</p>

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

今日はここまで

関連する記事



こちらはいかが?


コメントを残す