🪡

WordPress の get_template_part を使うときは無名関数が便利

2023/06/14に公開

TL;DR

get_template_part から呼び出されるコードは無名関数に包んでおくと安全でいい

<?php

(function ($post) {
?>
己のWordPressを磨け
<?php
})($args['post']);

解説

get_template_part で呼び出されるコードは、PHP的にはグローバルスコープで実行されます。
したがって $post などのWordPressが用いる変数名と被った命名をすると、上書きされてしまいます。
呼び出し元が関数の内部であっても関係ありません。(私は呼び出し元が関数スコープ内なら呼び出し先も同じスコープになると誤解していました)

しかし get_template_part から呼び出されるコードはファイルも分かれていますし、関心分離の観点からもカプセル化するべきです。
上記スニペットのように無名関数に包むようにしておくと、うっかりglobal汚染してしまうような事故を防ぐことができます。

また、副次的な作用として、 argsをどのように使っているかが明確になるのもよさそうです。

Discussion