気軽な 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 を使う前に、「その処理が本当に止まってもいいのか?」を一度立ち止まって考えることが大切です。