色々疑ったけど、結局wp_footer()を書き忘れてただけだった話

色々疑ったけど、結局wp_footer()を書き忘れてただけだった話

本業のオリジナルテーマ制作案件で、なんとも締まらない不具合に遭遇したことがあります。
管理バーが表示されない、お問い合わせフォームが動かない、郵便番号の自動入力も動かない。
一見バラバラな症状が、同時に何個も出てきたんです。
長年テーマ制作をやってきた中でも、たまに踏むタイプの「あるある」なんですが、今回はその原因調査の流れをまとめておこうと思います。

症状はバラバラ、原因はたぶん1つじゃない

最初は「これは複数の不具合が重なってるな」と身構えました。
管理バーが出ない、Contact Form 7が反応しない、郵便番号自動入力のプラグインも動かない。
関連性が見えないので、1つずつ切り分けていくしかありません。
この時点では、まさか全部が同じ書き忘れに集約されるとは思ってもいませんでした。

💡 Tips: 管理バーとは

WordPressにログインしている状態でサイトを表示すると、画面上部に出てくる黒い帯のことです。編集画面へのリンクや通知が並んでいて、ログイン中かどうかの目印にもなります。テーマ側の実装次第で、この管理バーごと表示されなくなることがあります。

プラグインを1つずつ疑っていく

まずはプラグイン側を疑いました。
Contact Form 7を再インストールしても直らない、郵便番号自動入力のプラグインの設定を見直しても変わらない。
公式ドキュメントも一通り確認。それらしい既知の不具合報告は見当たりません。
プラグインごとの個別バグにしては、症状の出方が揃いすぎている気がしてきました。

ここまで来て、ふと「これ、プラグインじゃなくてテーマ側が怪しいのでは」と思い始めました。
ブラウザの開発者ツールでページのソースを確認してみると、``タグの直前に出力されているはずのスクリプトタグが、いくつも見当たりません。
個別のプラグインのバグというより、何かの出力そのものがまるごと欠けている感触でした。
管理バーもJS依存のプラグインも、共通して使っているものといえば……と考えて、ようやく思い当たりました。

結局、`wp_footer()`が無かった

答えは footer.php にありました。
カスタムテーマの`footer.php`を確認したところ、`wp_footer()`の呼び出しがそもそも書かれていませんでした。
WordPressでは、フッター直前でこの関数を呼ぶことで、管理バー・多くのプラグインのJS・`in_footer`指定で読み込むはずのスクリプトなどが出力される仕組みになっています。
これが無いと、見た目には何も表示されないまま、関係する機能だけがごっそり動かなくなるんです。

footer.phpに1行`wp_footer();`を追加したところ、管理バーもContact Form 7も郵便番号自動入力も、まとめて動くようになりました。
バラバラに見えていた不具合が、実は1つの原因から全部つながっていたわけです。
1つずつ個別に対処していたら、原因にたどり着くまでもっと時間がかかっていたと思います。

なんで見落としやすいのか

この手の不具合が厄介なのは、エラーメッセージが一切出ないことだと思います。
PHPのエラーでもJavaScriptのコンソールエラーでもなく、ただ「機能が静かに動かない」だけなので、原因を疑う方向がなかなか定まりません。
症状ごとに個別のプラグインを疑って時間を溶かしてしまう、というのが典型的なハマり方です。

今回学んだのは、複数の無関係に見える不具合が同時に出てきたときほど、個別対応を急ぐ前に「共通して依存している基盤部分」を疑ってみる価値がある、ということでした。
`wp_footer()`のようなテーマの土台部分は、一度書いてしまえば意識しなくなる分、抜けていることに気づきにくいんだと思います。

wp_footer()だけ気をつければいいの?

実はheader.php側にも対になるwp_head()があって、こっちが抜けるとCSSや<head>内のタグがごっそり無くなるんだ。

どっちもテーマ作りの最初に書くやつだよね?

そうそう。最初に書くものだからこそ、抜けてても「まさかそこが原因のはずがない」って後回しにしがちなんだよね。

まとめ

今回の教訓はシンプルで、`footer.php`に`wp_footer()`、`header.php`に`wp_head()`は、オリジナルテーマを作るときの最初の一手として絶対に外せない、ということです。
分かってはいたつもりでした。
それでも、うっかり抜け落ちるとこんなに広範囲の不具合につながるんだと、身をもって実感しました。
もし管理バーが出ない・プラグインのJSが謎に動かないという症状に出会ったら、真っ先にこの1行を疑ってみてほしいです。

今回のようにエラーメッセージが一切出ない不具合は、正直しんどいです。
PHPの構文エラーならログに一発で出ます。
JavaScriptならコンソールに赤字。
でも「機能がただ静かに動かない」だけのケースは、そもそも何を疑えばいいのかの手がかりが薄い。
今後似たような「原因不明の複合不具合」に出会ったときのために、この経験は自分の中の判断材料としてストックしておこうと思います。
地味な話ですが、こういう「あるある」の積み重ねが、結局は一番実務で役に立つ気がしています。

この記事を書いた人

Web制作歴10年近く。WordPressのテーマカスタマイズやコーディングを中心に、副業・本業ともにweb制作に携わっています。このブログでは、実際に手を動かして分かったことを書いています。

Cat's Handをフォローする

この記事が参考になったら、応援クリックをお願いします

タイトルとURLをコピーしました