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

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回はテーマcocoonがインストールされているディレクトリ名を変更できる
get_cocoon_template_directory
です。
フックの概要
フック名 | 発火タイミング |
---|---|
get_cocoon_template_directory | テーマディレクトリを取得する関数であるget_cocoon_template_directory()関数が呼び出されるたびに発火 |
フックの発火条件
このフックは、get_cocoon_template_directory()の関数が呼ばれると必ず1回発火します。
WordPressのライフサイクル中に複数回呼ばれます。
使いどころ
このフックを使うと、Cocoonのテーマディレクトリパスを意図的に書き換えることができます。
ただし、これは物理的にテーマファイルの場所を移動するという意味ではありません。
「変更後のディレクトリにCocoonがインストールされていることにする」ような仮想的な処理になります。
……で、何が嬉しいのか?
正直なところ、このフックの明確な用途は分かっていません。
何らかの理由でCocoonのファイル群を別の場所に置いて参照させるようなカスタム用途が想定されているのかもしれませんが、通常の利用者にとっては使いどころのないフックだと思います。
むしろ、下手に変更するとCocoonの挙動に不具合を起こすリスクがあるため、個人的には無理に使う必要はないと感じます。
apply_filters呼び出し元のソースコード
lib/_defines.php
function get_cocoon_template_directory(){
return apply_filters('get_cocoon_template_directory', get_template_directory());
}
引数
$get_cocoon_template_directory:(string)テーマのインストールディレクトリ
カスタマイズコード例
function customize_get_cocoon_template_directory( $get_cocoon_template_directory ) {
$get_cocoon_template_directory .= '/hogehoge';
return $get_cocoon_template_directory;
}
add_filter( 'get_cocoon_template_directory', 'customize_get_cocoon_template_directory' );
注意点
・テーマの挙動に直結するため、むやみに変更すべきではない
ディレクトリパスが変わると、Cocoonの内部処理が正しく動作しなくなる可能性があります。
・get_template_directory() は絶対パスを返す
パスの操作ミスに注意してください。不要なスラッシュ追加などもトラブルのもとです。
・返り値がそのままファイル読み込みなどに使われることがある
存在しないディレクトリを返すと、テーマやプラグインのエラーにつながります。
まとめ
get_cocoon_template_directory フィルターは、Cocoonテーマのインストールディレクトリパスを上書きできるフィルターフックです。
かなりマニアックな用途を想定した仕組みであり、普通のCocoonユーザーが使う場面はほぼないかもしれません。
「こういうフックも用意されているのか」という知識として押さえておく程度でよさそうです。