テンプレートファイルをプラグインから呼び出しつつ、テーマから上書きする方法

今回は、プラグインの中にあるファイルを、テーマのテンプレートファイルとして使う方法について書きます。

つまり、wp-content/plugin/my-plugin-name/templates/single-example.phpのようなファイルがあったとして、それがテーマ内のsingle.phpや、page.phparchive.phpと同じように使えるようにする、という意味です。

このやり方のメリットとしては、

  • カスタム投稿タイプをサポートするプラグインであってもインストールしたらすぐ使える

というものがあります。カスタム投稿タイプの定義をして、ユーザーがデータを入力できるようにし、その表示のテンプレートもプラグイン側で持つ、ということができます。

逆に、この方法の難しいところとして、

  • テンプレートの html の構造が違うからテンプレートファイル使いにくい

という問題があります。

仕様

以下のような動き方にしたいと思います。

  1. ある名前のファイルが子テーマにあればそれを採用
  2. 親テーマにあればそれを採用
  3. テーマに見つからなければ、プラグイン内のあるディレクトリにあるものを採用

上記のような流れでファイルを探していくことで、配布するプラグインでテンプレートファイルを配布しつつ、テーマから上書きできるようにする、というのができるようになります。

get_template_part も同じようにやりたい

次回は以下のリンクを参考に、 get_template_part() を同じようなイメージでできないかを見てみます。

https://pippinsplugins.com/template-file-loaders-plugins/

↓ プラグインを作る方々への本、書きました。 ↓

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

テンプレートファイルをプラグインから呼び出しつつ、テーマから上書きする方法」への2件のフィードバック

  1. いつもサイトを参考にさせていただいております。
    こちらの記事の件で、一つ質問させてください。

    この記事の方法で、プラグインフォルダの中にあるテンプレートファイルを読み込ませて
    固定ページで選択できるテンプレートを増やしたいと思っているのですが、うまくいきませんでした。

    実現したいことは別の方法を使わなければならないとか、そういったことはあるでしょうか?

  2. – `is_page()` のエリアを作る
    – WordPressコアで、固定ページテンプレートファイルがどのように読み込まれているのかを調べて真似する
    – 固定ページテンプレートファイルを固定ページ編集画面での選択肢に表示するフックを探して同じく追加する

    という作業が必要だと思います。どうでしょう?