気軽な return がサイト崩壊の原因に【Wordpressテンプレートでの注意点】
※本ブログの目的は個人の備忘録であり、コードは参考用として掲載しています。
実際に使用される際は、ご自身の環境で十分に動作確認を行ってください。
コードの利用によって生じたいかなる問題についても責任を負いかねますので、あらかじめご了承ください。
WordPressテーマを自作していると、ちょっとした条件分岐を入れる場面があります。そんなとき、return
を使って処理を中断したくなることもあるかもしれません。
しかし footer.php
や header.php
などのテンプレートファイルで return
を安易に使ってしまうと、思わぬ表示崩れや致命的なエラーにつながることがあります。
この記事では、return
による処理中断の注意点と、実際によくあるパターンを紹介します。
return
が止めるのは関数だけじゃない
一般的に return
は「関数の処理を終了して値を返す」という目的で使います。
function example() {
return 'Hello';
echo 'World'; // これは実行されない
}
上記のように、return
の後の処理は一切実行されません。
問題になるのは、require
や include
などのテンプレート読み込みの中で return を使った場合です。
例:footer.phpの中に return
がある場合
たとえば、footer.php
に次のようなコードがあるとします。
<?php
// 条件によってフッターを出力したくないとき
if ( is_page('special') ) {
return;
}
?>
<footer>
<p>© 2025 example.com</p>
</footer>
このコードでは、「special
という特別な固定ページではフッターを表示させたくない」という意図で return;
を使っています。
一見うまく動いているように見えるかもしれませんが、この return によって PHP の処理自体がその場で終了してしまうため、footer.php
の残りの処理が一切実行されなくなります。
もしこの footer.php
が get_footer()
で読み込まれていたとすると、以降のテンプレート全体が崩れる可能性もあります。
解決策:return
の代わりに条件分岐で制御する
return
で処理を止めたい場合も、テンプレートファイル内では次のようにしたほうが安全です。
<footer>
<?php if ( !is_page('special') ) : ?>
<p>© 2025 example.com</p>
<?php endif; ?>
</footer>
これならテンプレートファイル自体の読み込みは完了し、他のテンプレートや処理にも影響を与えません。
もしくは、関数内で処理を return で抜ける場合でも、出力そのものではなく、出力の条件や構造を工夫するのがポイントです。
なぜ return が危険なのか
return
は「関数やファイルの処理を即座に終了させる」ための命令です。そのためテンプレートファイル内で使うと、以降に書かれている HTML や PHP が一切実行されなくなります。
特に以下のような場面で注意が必要です。
header.php
やfooter.php
の中でreturn
を使うinclude()
やget_template_part()
の中でreturn
によって処理が途切れる- 複数の処理の一部だけを止めたくて return を使ったつもりが、すべて止まってしまう
まとめ
return
は、関数の処理を途中で終了させるために非常に便利な命令ですが、使い方を誤ると思わぬバグの原因になります。
特に、テンプレートファイル内などで条件分岐に return
を使った場合、その後に必要な処理が実行されず、画面が真っ白になったり、意図しない出力になることがあります。
また、関数の中だけでなく、テンプレートファイル直下で return
を使うと、処理が強制終了してしまい、get_footer()
や wp_footer()
など、本来実行されるべき重要な関数がスキップされてしまいます。
そのため、「return を書いた位置の先に大事な処理があるかもしれない」と常に意識することが大切です。コードの可読性を保ちつつ、意図しない動作を避けるためにも、条件によって処理を分岐したい場合は return
だけでなく if-else
を使う、あるいは continue
や break
など、目的に合った制御構文を選ぶようにしましょう。
return
を使うときのチェックリスト
return
は便利な命令ですが、使い方を誤るとページの一部または全体が表示されなくなることがあります。特にテンプレートファイル内で使う場合は、以下のポイントをチェックしましょう。
関数の中だけで使っているか
return
は本来、関数の処理を途中で終了させるための構文です。テンプレートファイルのグローバルな位置で使うと、それ以降の処理が実行されず、ページ全体のHTMLが途切れてしまう原因になります。
テンプレート全体の出力が止まっていないか
return
を使うことで、たとえばヘッダーやフッターが出力されずに消えてしまうことがあります。
「特定条件のときだけ非表示にしたい」という意図でreturn
を書いた結果、その後にあるget_footer()
などが実行されないパターンに要注意です。
条件によって非表示にしたいだけなら、if
で囲む方法にしているか
特定の条件で一部分だけを表示・非表示にしたいのであれば、return
で処理を打ち切るのではなく、if
文で表示する内容を制御するほうが安全です。
おわりに
ちょっとした return
の使い方でも、WordPressテーマにおいては大きなトラブルの原因になります。
特にテンプレートファイルは HTML 出力と密接に関係しているため、慎重に扱いましょう。return
を使う前に、「その処理が本当に止まってもいいのか?」を一度立ち止まって考えることが大切です。