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を楽しんでいます。
コメントをどうぞ