web関連
カスタムフィールドのテキストエリアで改行が反映されない件について
カスタムフィールドのテキストエリアの出力で、何故か改行が無視されたので調べて修正しました。
get_post_meta()を使ったカスタムフィールド出力
// 修正前
<?php
echo get_post_meta($post->ID, 'カスタムフィールド名', true);
?>
カスタムフィールドの出力自体は「the_filed()」や「get_filed()」を使ってもできるのですが、get_post_meta()
を使ったときの出力方法です。
ただ、これだけだと管理画面のテキストエリア上では改行していても出力時に改行されないので本題である改行させるためにnl2br()
を使う
nl2br()でbrタグを出力
// 修正後
<?php
echo nl2br(get_post_meta($post->ID, 'カスタマフィールド名', true));
?>
これで改行が反映される。
補足:get_post_meta()とは
get_post_meta()
がよくわからないので試してみた。
get_post_meta()
はすべてのカスタムフィールドの値を取得できる(隠し値込み)
// 試したコード
<?php
$hoge = get_post_meta($post->ID);
var_dump($hoge);
?>
固定ページ、投稿ページ、カスタム投稿内でvar_dump()
を使い検証してみました。
- 固定ページ
- 固定ページで使われているカスタムフィールド全部取得
- 投稿ページ
- 投稿ページで使われているカスタムフィールド全部取得
- カスタム投稿ページ
- カスタム投稿ページで使われているカスタムフィールド全部取得
カスタム投稿を除いては、ループ外でもループ内どちらでも結果は変わらなかった…
「the_filed()」との違いは「echo()とprint()」レベルの違いなのかな?
(詳しい人は全然違うわというかもしれませんが許してください勉強しますから)
phpは結果が同じ出力方法が複数あるみたいなのでそういうものと思ってたほうがいいのかな?
それにしてもget_post_meta()
で一括で取得して配列の状態で取得してどうにかするのだろうか?
今いち使いどころがわからない…
勉強しないとかな…
いつか配列を使いこなして、コードをより効率よく書けるようになりたい。
そのためにも、wordpress側で用意されているタグがどんな値を内包しているかどうかに目を向けていきたい
get_post_meta()
の第3引数のtrueをfalseにすると配列で値を取得できる(どこで使うかはわからない)