tips

get_post_metaを三項演算子の活用でスッキリ

三項演算子省略形の活用について

PHP5.3以降、三項演算子は真ん中を省略できるようになったわけですが、意外と使ってこなかった。
get_post_metaでカスタムフィールドを呼び出す場合、条件分岐で、いくつかの値をを比較して付与するってのはよくあるケースだと思う。

if ( get_post_meta( $post_id, 'metakey_1', true ) ){
  $metavalue = get_post_meta( $post_id, 'metakey_1', true );
} else {
  $metavalue = get_post_meta( $post_id, 'metakey_2', true );
}

時々見るこんな手順ですが、metakey_1を二度呼び出しているので、よろしくない。

$metavalue = get_post_meta( $post_id, 'metakey_1', true );
if ( !$metavalue ){
  $metavalue = get_post_meta( $post_id, 'metakey_2', true );
}

処理的にはこちらの方がずっと正しいし、可読性も良いのでこれで良いと思われる。
ただ、値を渡したいだけならこれでも間怠っこしく感じる時もある。

$metavalue = get_post_meta( $post_id, 'metakey_1', true ) ?: get_post_meta( $post_id, 'metakey_2', true );

三項演算子でスッキリ書けた。書いてみたら当たり前なんだけども、何故か今まで使ってこなかった。内部の処理的にも問題ないはず。