WordPressテーマでこれ忘れてない?wp_body_open()

ブラウザの入口とwp_body_open()のパズルピース

自作のWordPressテーマで、wp_head() と wp_footer() は入れたけれど、もう一つ忘れていませんか?今回は wp_body_open()。見た目には変化がなくても、プラグインなどが処理を追加するための大切な入口です。

bodyの開始直後に置く関数

wp_body_open() は、wp_body_open というアクションフックを実行する関数です。フックは、別の処理を差し込める場所のこと。WordPress 5.2で追加され、現在もテーマ制作で使われています。

PHPでテンプレートを書くテーマなら、通常は header.php の <body> 開始タグのすぐ後に、次のように記述します。

<body <?php body_class(); ?>>
<?php wp_body_open(); ?>

どんな場面で役立つ?

プラグインなどがbodyの冒頭にHTMLを出力したいとき、このフックを利用できます。テーマ側に呼び出しがないと、この場所に登録された処理は実行されません。「プラグインを有効にしたのに、必要な表示が出ない」というときの確認ポイントにもなります。

関数を置いただけで、必ず何かが表示されるわけではありません。処理を差し込む側があって初めて動くので、見た目に変化がなくても心配しなくて大丈夫です。

追加する前に、重複を確認

まずテーマ内を検索し、すでに呼び出されていないか確認しましょう。二重に実行すると、フックに登録された出力や処理も重複することがあります。

今回のコードは、PHPでbodyタグを出力するテーマ向けです。記事の本文に貼って実行するものではありません。ブロックテーマのHTMLテンプレートに、そのままPHPを書き込む方法とも異なります。

wp_head() や wp_footer() の代わりにはならないので、テーマ制作時はこの3つをセットで確認しておくと安心ですね。

参考:WordPress公式「wp_body_open()」/Theme Handbook「Plugin API Hooks」