tips

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

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

PHP5.3以降、三項演算子は真ん中を省略できるエルビス演算子というものが使えるようになったわけですが、使えないような環境もままあったりもしたのですが、そんなお仕事はお断りするとして、そろそろいいだろうと言うことで、今後は意識して使ってみることにする。

すぐに気がついたのは、wordpress案件で使う機会が多いと言うこと。特に、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 );

if演算子と用途がはっきり分かれていいな、と思った次第です。