WordPress のウィジウィグエディターや、カスタムフィールドで複数行テキストエリアなどを作った時、内容をサイトに表示させてみると改行が反映されないことがあります。これは、wpautop()
かnl2br()
の関数でラップすることで解決できます。
wpautop()
1行の改行はbrタグ、2行の改行はpタグに囲まれます。
そのため親要素はdivなどにしておかないと、pタグをpタグで囲む可能性があります。これは HTML のコーディング規約違反になるので注意しましょう。
p タグが出力される可能性があるので、これはダメ!
<p>
<?= wpautop( get_the_content() ) ?>
</p>
ただウィジウィグエ ディターの出力ではこちらはデフォルトで入るようになっています。何もしていないのに改行が反映されていないなら、元々 functions.php 等で wpautop のフィルターを外しているか、プラグインの影響による可能性が高いです。
nl2br()
改行がすべてbrタグに変換されます。pタグを生成したいかどうかでどちらにするか決めるとよいと思います。困ったらwpautop()でいいかなと思います。
実際の使用例
// コンテンツを表示する例
echo wpautop( get_the_content() );
// カスタムフィールド text01 を表示する例
echo nl2br( get_post_meta( get_the_ID(), 'text01', true ) );