wp_head();とwp_footer();とはいったい何なのか

WordPressテーマ開発をやり始めたころ、「header.phpにはwp_head();を、footer.phpにはwp_footer();を必ず書いてください」と言われ、意味もよくわからず「とりあえずこれ書いとかんと動かんのやな」くらいのイメージでいましたが、書かなければ動かないということは当然これらは重要な役割を持っているからなのです。

よく「なんで動かんのやろ…」と原因不明の不具合に悩まされているとき、wp_head();かwp_footer();のどっちかがないということがたまにありますが、この方々はとんでもなく重要な役割を持っていることを知れば、書き忘れることも少なくなるでしょう。

むしろ愛着すら持つようになるかもしれません。

というわけで、今回はwp_head();とwp_footer();がいったい何なのかを徹底解説したいと思います。







wp_head();とは

WordPress Codexでは、wp_head();について以下のように説明されています。

‘wp_head’ アクションをスタートさせる。テーマテンプレートファイル内の</head>タグ直前で使う(例: header.php や index.php の中)。

全然意味がわかりません。とりあえず</head>の直前に入れたほうがいいということだけは伝わります。

これでは結局なんやねんってなってしまうので、実際にテンプレートにwp_head();を入れて、サイト上でどのようになっているのか確認してみましょう。

↓ブラウザ上で見てみると…

うわーっ!なんかいっぱい増えてる!

<meta name=’robots’ content=’noindex,follow’ />

以降は全部wp_head();によって出力されているんですね。

そう、wp_head();とは、WordPressさんサイドで用意してくれるhtmlをhead内に出力してくれる関数なんです。

例えばそこには、All in one SEO Pack等のプラグインで設定したmeta情報や、プラグイン固有のスタイルシート、javascriptファイルなんかも出力されることになります。

逆に言えばwp_head();がないと、head内に必要な情報が出力されないということです。



wp_footer();とは

これも例によりCodexを見てみましょう。もしかするとわかりやすい説明が…

‘wp_footer’ アクションフックをスタートさせる。テーマテンプレートファイル内の </body> タグ直前で使う(例: footer.php や index.php の中)。

はいオッケーです。

wp_footer();も、働きとしてはwp_head();と同じです。</body>直前に、ページの最後に読み込まれるべきスクリプトなんかが出力されるわけですね。見てみましょう

↓ブラウザ上で見ると…

これまたすごい量のコードが出力されています。

ここにはページの最後に読み込むスクリプトに加え、ログインしているときにサイト上部に表示される管理バーのコードも出力されます

なので、wp_footer();がないと一部のスクリプトが読み込まれずエラーになったり。管理バーが表示されません。

おわり

wp_head();とwp_footer();の重要さがご理解いただけたかと思います。この方々がいないと、ページはまともに機能しません。

以後、書き忘れのないよう注意しましょう。

シェアする

フォローする