cocoonフック調査~body_class_additionalの使い方と活用例

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回は<body>タグに任意のクラスを追加できるフィルターフック
body_class_additional
です。
フックの概要
フック名 | 発火タイミング |
---|---|
body_class_additional | 各ページ、<body>タグが描画される際に1回発火 |
フックの発火条件
<body>タグのあるページが表示されると必ず1回無条件に発火します。
使いどころ
<body>タグにクラスを追加したいというシチュエーションは容易に想像がつきます。
ただし、WordPressにはもともと body_class
というフィルターフックが存在するので、
add_filter('body_class', func);
でbodyタグにクラスを追加することができます。
body_class_additionalも内部的にはbody_classフックで呼び出されているため、わざわざこのフックを経由する理由は明確ではありません。
apply_filters呼び出し元のソースコード
lib/additional-classes.php
return apply_filters('body_class_additional', $classes);
引数
$classes:(array)クラス名のリスト。
カスタマイズコード例
以下は無条件にbodyタグに’additionalClass’というクラスを追加する例です。
function customize_body_class_additional( $classes ) {
$classes[] = 'additionalClass';
return $classes;
}
add_filter( 'body_class_additional', 'customize_body_class_additional' );
注意点
・WordPress標準の body_class フックでも同様の処理は可能です。
・Cocoon独自フックを使う場合は、テーマアップデート時に仕様変更がないか確認してください。
・配列に追加するだけなので、クラス名の重複や命名規則に注意してください。
まとめ
・body_class_additional は タグに任意のクラスを追加できるフィルターフック。
・発火タイミングは各ページの <body>
タグ描画時。
・WordPress標準の body_class
フックでも同様のことが可能。
・Cocoon独自フックを利用する場合は、既存の body_class
と重複しないよう注意。