今回は、プラグインの中にあるファイルを、テーマのテンプレートファイルとして使う方法について書きます。
つまり、wp-content/plugin/my-plugin-name/templates/single-example.php
のようなファイルがあったとして、それがテーマ内のsingle.php
や、page.php
、archive.php
と同じように使えるようにする、という意味です。
このやり方のメリットとしては、
- カスタム投稿タイプをサポートするプラグインであってもインストールしたらすぐ使える
というものがあります。カスタム投稿タイプの定義をして、ユーザーがデータを入力できるようにし、その表示のテンプレートもプラグイン側で持つ、ということができます。
逆に、この方法の難しいところとして、
- テンプレートの html の構造が違うからテンプレートファイル使いにくい
という問題があります。
仕様
以下のような動き方にしたいと思います。
- ある名前のファイルが子テーマにあればそれを採用
- 親テーマにあればそれを採用
- テーマに見つからなければ、プラグイン内のあるディレクトリにあるものを採用
上記のような流れでファイルを探していくことで、配布するプラグインでテンプレートファイルを配布しつつ、テーマから上書きできるようにする、というのができるようになります。
Load template file in plugin folder.Load template file in plugin folder. GitHub Gist: instantly share code, notes, and snippets.
get_template_part も同じようにやりたい
次回は以下のリンクを参考に、 get_template_part() を同じようなイメージでできないかを見てみます。
コメント
コメント一覧 (2件)
いつもサイトを参考にさせていただいております。
こちらの記事の件で、一つ質問させてください。
この記事の方法で、プラグインフォルダの中にあるテンプレートファイルを読み込ませて
固定ページで選択できるテンプレートを増やしたいと思っているのですが、うまくいきませんでした。
実現したいことは別の方法を使わなければならないとか、そういったことはあるでしょうか?
– `is_page()` のエリアを作る
– WordPressコアで、固定ページテンプレートファイルがどのように読み込まれているのかを調べて真似する
– 固定ページテンプレートファイルを固定ページ編集画面での選択肢に表示するフックを探して同じく追加する
という作業が必要だと思います。どうでしょう?