行なったsnow_monkey_get_template_part_<name>フックでは、テーマに存在していたテンプレートパーツを置換する事を行いました。今回の記事では、テンプレートのルートディレクトリについて知っていきましょう。今回紹介するテンプレートのルートディレクトリについて知る事で、テーマに存在しないテンプレートパーツを追加して読み込むなどが可能になっていきます。プラグインにテンプレートパーツを追加しようオリジナルのテンプレートパーツを追加する方法を解説します。デバッグモードで読み込むテンプレートパーツをコメントアウトで表示するようにしました。-->と言った記述などが書かれているのを確認できると思います。確認できたところで、ルートディレクトリの言葉について調べてみましょう。directory】ファイル構造システムにおいて、階層における最上位ディレクトリデジタル言葉辞典より引用と、デジタル言葉辞典では書かれています。Monkeyのテーマディレクトリ/template-parts/nav/drawer.phpファイルでした。この場合のルートディレクトリはどうなるでしょうか?テネーブルこの場合のケースであれば、template-parts/nav/drawerと書かれている元のディレクトリがルートディレクトリに当たります。);の関数を使用していました。この関数の第1引数に指定されているのはテンプレートパーツ<slug>-<name>です。Monkeyのテーマディレクトリである事が解っています。Monkeyのテーマディレクトリ内のテンプレートパーツしか読まれません。どのようにしてプラグイン内のテンプレートパーツを読み込むように出来るのでしょうか?プラグイン内のディレクトリもテンプレートのルートディレクトリに設定できれば問題は解決しそうです。Monkeyでそのような機能があるのか、まずはフックを探してみましょう。Hookのsnow_monkey_template_part_rootフックが該当しました。ルミェールsnow_monkey_template_part_rootフックの説明を読むと、実はこのフックはv5.3.1で非推奨になってるんだ。Monkey」にフック処理を書いてみましょう。my-snow-monkey.phpに下記の記述を加えてみましょう。$hierarchy;},10,4);上記のコードを追加した上、プラグインのディレクトリにtemplate_rootの名前でディレクトリを新規生成します。plugins(プラグインディレクトリ)my-snow-monkeymy-snow-monkey.phptemplate_root(新規生成)template-parts(新規生成)nav(テスト用に新規生成)global.php(テスト用に新規生成)このtemplate_rootディレクトリが、プラグインのテンプレートルートのディレクトリになります。このtemplate_rootディレクトリにtemplate-parts/nav/global.phpファイルを生成し、下記のように記述します。'test';実際にページを確認してみましょう。テネーブルグローバルメニューの部分がtestと言う文字列に変わっているのを確認できましたか?追加したプラグイン内のtemplate_rootをテンプレートのルートディレクトリとして見るようになった事で、グローバルメニューを表示する為にあるテンプレートパーツのtemplate-parts/nav/global.phpがそちらを読み込むようになっているからです。確認が済みましたら、template-parts/nav/global.phpファイルを削除して、元のグローバルメニューが表示されるようにしておきましょう。snow_monkey_template_part_root_hierarchyフックの実行タイミング、引数と返却値についてsnow_monkey_template_part_root_hierarchyは、テンプレートの読込み時に実行されるフックです。第1引数の$hierarchyは、テンプレートのルートディレクトリを値として持つ配列です。返却値にも使用されます。第2引数の$slugは、読み込まれたテンプレートのslug値となります。第3引数の$nameは、読み込まれたテンプレートのname値となります。第4引数の$varsは、テンプレートの読込み時に渡される値になります。);の関数などが実行された時にこのフックが実行されるみたい。引数の感じも凄く似てるよね。テネーブルほとんどの場合は第2引数などは使われないかもしれませんが、第2引数の値などを条件にする事で、条件の時だけテンプレートを読み込むルートディレクトリを切り替える事が可能と言う事ですね!snow_monkey_template_part_root_hierarchyフック、配列を返却するのは何故?snow_monkey_template_part_root_hierarchyフックが、ルートディレクトリの配列を返却するのは何故でしょうか?ルートディレクトリが1つでは駄目なのは何故なのか解説します。非推奨となったsnow_monkey_template_part_rootフックは、配列を返却しないフックであり返却値は1つです。その為、基本的にルートディレクトリは設定した1つか、テーマディレクトリになってしまう問題がありました。その問題の結果としては、もし複数のプラグインでsnow_monkey_template_part_rootフックを使用していた場合は、優先度の高い該当フックの返却値がルートディレクトリに設定されてしまう問題がありました。その他の場合では条件を正しく設定されていなければ正しいルートディレクトリを参照出来ない、意図しない動作をしてしまうと言う問題があったのです。v5.3.1から追加されています。テンプレート読み込みは、設定されたルートディレクトリ配列を次々に調べていきますsnow_monkey_template_part_root_hierarchyフックでreturnしているのは$hierarchyと言うディレクトリパスを値にもった配列です。各テンプレートパーツの読込み処理は、この$hierarchyに値が追加された順に、ディレクトリパス内のテンプレートパーツのファイルが存在するかチェックし、ファイルが存在する場合にはそのテンプレートパーツを使用する仕様になっています。存在しない場合の最後は、テーマディレクトリを調べます。それでもファイルが存在しない場合は、テンプレートパーツファイルの読込みは行われません。テネーブル追加された順に読み込むので、配列の並び順が先頭にあればあるほど優先的になります。ルミェールフックの優先度を低く設定してもarray_unshift関数などを使うと配列の先頭に追加出来るので、フックの優先度でルートディレクトリの読込み順が必ずしも決まる訳じゃないよ。そこは注意しておこう!また、テンプレートパーツファイルの読込みが行われない場合であってもsnow_monkey_get_template_part_argsフックやsnow_monkey_get_template_part_<slug>フックと言ったテンプレートパーツを処理するフックは実行されます。それらのフック処理に何らかの出力を行う処理があった場合は、その処理結果を出力します。テンプレートパーツファイルは必ず存在させる必要はありません。テネーブルテンプレートパーツファイルを使わない条件の時には、空の配列を返却させる方が良いかもしれません。順にチェックしていくファイルチェック処理を行わなくする事で高速化が出来ます。カスタマイズ用のテンプレートパーツを追加さて、テンプレートのルートディレクトリについて理解が深まったところで、カスタマイズ用のテンプレートパーツを追加するにはどうすれば良いか見当がついたと思います。テンプレートのルートディレクトリを設定し、その中にcustomize/test.phpなどと言ったファイルを配置するだけです。ob_get_clean();と言ったようになります。テンプレートパーツの読込み処理で読込みをする事でcustomize/test.phpも通常のテンプレートパーツとして使用が可能となります。snow_monkey_get_template_part_argsフックやsnow_monkey_get_template_part_<slug>-<name>フックと言ったテンプレートパーツを処理するフックも実行されます。ルミェールカスタマイズで追加するHTML領域をテンプレートパーツにすると、その領域もフックでカスタマイズ出来ちゃう。v6以降ではカスタムページテンプレートをプラグインで追加できるようになっています。カスタムページテンプレートの追加方法カスタムページテンプレートは、ページ編集画面で選択できるテンプレートのことです。子テーマを用意する」部分を行わず、その手順の代わりにテンプレートのルートディレクトリをsnow_monkey_template_part_root_hierarchyフックを使用して設定してください。カスタムページテンプレート用のディレクトリを作成する」からの手順は子テーマでは無く、下記のようにルートディレクトリ内で同様にpage-templatesディレクトリを新規生成します。テンプレートのルートディレクトリpage-templates(新規生成)それ以降の手順は、同様に新規生成したpage-templatesディレクトリ内でファイル作成などを行えば、プラグインでカスタムページテンプレートを作ることが可能になっています。テネーブル子テーマのstyle.cssに記述するスタイルシートの手順に関しましては、style.cssに記述する代わりに、管理画面から「外観」→「カスタマイズ」メニューの「追加CSS」設定を使用されるか、wp_enqueue_styleフックなどを使用し、プラグインからcssを追加で読む処理を行なって適用するようになります。最後に今回の記事で紹介したテンプレートのルートディレクトリを知った事で、テーマにオリジナルのHTML領域を追加しやすくなったのではないでしょうか?また追加したオリジナルのHTML領域もフックで、更にカスタマイズしやすくなったのではないでしょうか?これまでの記事で実践した事を上手く応用して制作を行えば、オリジナルのHTML領域を追加するだけではなく、削除したいHTML記述を削除し、代わりに表示したいHTML領域をオリジナルのテンプレートで読み込んだ形で置換と言った事も可能でしょう。言った応用カスタマイズにも挑戦してみてください。Wizの制作チームにお問い合わせください。回答できる範囲で回答させていただきます。テーマカスタマイズ方法の資料に使いたいなどの引用なども、ご自由にどうぞ。何書こう...と、グダグダ書いただけ。Gremoireでは、サイトや広告を改善する為にCookieを使用しています。このサイトを閲覧し続けることにより、Cookieの使用に同意するものとします。詳しい情報は、プライバシーポリシーをご閲覧ください。