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

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回はテーマcocoonがインストールされているディレクトリ名を変更できる
cocoonフック調査~get_cocoon_stylesheet_directoryの使い方と活用例
です。
フックの概要
フック名 | 発火タイミング |
---|---|
get_cocoon_stylesheet_directory | テーマディレクトリを取得する関数であるget_cocoon_stylesheet_directory()関数が呼び出されるたびに発火 |
フックの発火条件
このフックは、get_cocoon_stylesheet_directory()の関数が呼ばれると必ず1回発火します。
WordPressのライフサイクル中に複数回呼ばれます。
使いどころ
このフックは以前紹介した get_cocoon_template_directory
と似ていますが、違いは以下の通りです。
・get_cocoon_template_directory・・・子テーマを使っていても親テーマのディレクトリを取得
・get_cocoon_stylesheet_directory・・・子テーマを使っている場合は子テーマのディレクトリを取得
なお、このフックもget_cocoon_template_directoryと同様で、物理的にテーマファイルの場所を移動するわけではありません。
「変更後のディレクトリにCocoonがインストールされていることにする」ような仮想的な処理になります。
……で、何が嬉しいのか?
正直に言えば、get_cocoon_template_directoryと同じで一般的な利用者にとって明確な用途はほぼ思いつきません。
特殊な環境やカスタム用途(例えば別パスのディレクトリを擬似的に指定する必要がある場合)では意味があるかもしれませんが、そうでなければ不要です。
むしろ、不用意に変更すると、Cocoonのファイル読み込みパスが変わってしまい、正常動作に影響を及ぼす可能性があります。
apply_filters呼び出し元のソースコード
lib/_defines.php
function get_cocoon_stylesheet_directory(){
return apply_filters('get_cocoon_stylesheet_directory', get_stylesheet_directory());
}
引数
$get_cocoon_stylesheet_directory:(string)テーマまたは子テーマのインストールディレクトリ
カスタマイズコード例
function customize_get_cocoon_stylesheet_directory( $get_cocoon_stylesheet_directory ) {
$get_cocoon_stylesheet_directory .= '/hogehoge';
return $get_cocoon_stylesheet_directory;
}
add_filter( 'get_cocoon_stylesheet_directory', 'customize_get_cocoon_stylesheet_directory' );
注意点
・テーマファイルの物理的な移動には対応していないため、変更しても実際のフォルダ構造は変わりません。
・誤ったディレクトリを返すとCocoonのCSSやPHPファイルが読み込めなくなり、表示崩れやエラーが発生する可能性があります。
・明確な理由がない限り変更しない方が安全です。
まとめ
get_cocoon_stylesheet_directory フックは、子テーマ利用時のディレクトリパスを動的に差し替えることができます。
しかし、通常のサイト運営では使い道がほとんどなく、むしろリスクの方が大きいフックです。
特殊な検証やカスタム環境でのみ慎重に活用し、不要な場合は触らないようにしましょう。