global $post; 廃止のススメ

タクソノミーターム関連のfunctionを書くのに、Codexをあさっていたら、has_term( $term = ”, $taxonomy = ”, $post = null ) という関数がでてきて、その中で、$post = get_post($post); なーんてやっていた。

ん?と思い調べてみると、get_post(null)は、$GLOBALS[‘post’]を返すようになっている。(バージョン3.3.1; wp-includes/post.php; line 371

つまり、if (!$post) global $post; と同じようなことをやっている(nullの場合)。

さらに言うと、関数で$postオブジェクト(か何か)を受けたいとき、$post をチェックする代わりに、get_post($post); とやっておけば、テキトーに正規化してくれるというわけ。

 

そういえばループ内とかで投稿オブジェクトを得るのに、global $post; とやるのはよくあるが、一行増えるうえに直接globalとかいまいち美しくない。

if (!$post) ~とか global $post; とかやるかわりに、$post = get_post($post) とやって簡素なコードにしよう。

Leave a Reply