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

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回はテーマディレクトリのURLを自由に書き換えることができる
get_cocoon_template_directory_uri
です。
フックの概要
フック名 | 発火タイミング |
---|---|
get_cocoon_template_directory_uri | URLを取得する関数であるget_cocoon_template_directory_uri()関数が呼び出されるたびに発火 |
フックの発火条件
このフックは、get_cocoon_template_directory_uri()の関数が呼ばれると必ず1回発火します。
WordPressのライフサイクル中に複数回呼ばれます。
使いどころ
このフックを使うと、CocoonのテーマディレクトリURLを意図的に書き換えることができます。
ただし、これは実際のテーマファイルの場所を変えるわけではありません。
「指定したURLにCocoonがインストールされていることにする」ような仮想的な処理になります。
……で、何が嬉しいのか?
get_cocoon_template_directoryで書いた記事と同様に、このフックの明確な用途は分かっていません。
何らかの理由でCocoonのテーマURLをカスタムURLで扱いたいケースがあるのかもしれませんが、通常の利用者にとっては、使いどころがないフックだと思われます。
むしろ、URLの改変によってCocoonの動作に不具合を招くリスクの方が高いです。
個人的には、「知っているだけで十分」なフックという印象です。
apply_filters呼び出し元のソースコード
lib/_defines.php
function get_cocoon_template_directory_uri(){
return apply_filters('get_cocoon_template_directory_uri', get_template_directory_uri());
}
引数
$get_cocoon_template_directory_uri:(string)テーマディレクトリのURL、通常はhttps://ドメイン名/wp-content/themes/cocoon-master
カスタマイズコード例
function customize_get_cocoon_template_directory_uri( $get_cocoon_template_directory_uri ) {
$get_cocoon_template_directory_uri .= '/hogehoge';
return $get_cocoon_template_directory_uri;
}
add_filter( 'get_cocoon_template_directory_uri', 'customize_get_cocoon_template_directory_uri' );
注意点
・Cocoonテーマが読み込むCSSやJS、画像のURLが狂う恐れがある
URLの改変によって、テーマ内リソースが正しく読み込まれなくなる可能性があります。
・get_template_directory_uri() は絶対URLを返す
不用意に文字列を追加すると、URL構造が破壊されるおそれがあります。
・仮想的なURL変更のため、サーバー側に該当パスが存在しないと動作に支障が出る
指定したディレクトリが存在しない場合、404エラーやレイアウト崩れを引き起こすかもしれません。
まとめ
get_cocoon_template_directory_uri フィルターは、CocoonテーマのディレクトリURLを上書きできるフィルターフックです。
機能としては面白いですが、一般的なカスタマイズにおいて使う場面はまずないでしょう。
「Cocoonの深部でこういった処理も差し替えられる」という一例として、頭の片隅に置いておけば十分かと思います。