[WordPress]記事ページやアーカイブで別ディレクトリにあるテンプレートを読み込ませる

記事ページやアーカイブ、そのほかにも固定ページやカスタム投稿タイプなど諸々のページで、自分で用意したテンプレートを読み込ませる方法について。

普通はWordPressテーマフォルダにsingle.phpやarchive.phpといった名前のファイルを置くのですが、例えばプラグインフォルダの中に置いた独自テンプレートを読み込ませたい場合ですね。テーマフォルダではなく別の場所にあるので自動的に読み込んでくれません。

かなり限定的ですが、自分がやりたい処理だったのでメモ。

処理内容はとっても単純、template_includeフィルターに関数をフックして、if文で処理します。引数$templateにはURLに適したテンプレートのパスが渡ってきます。

例えばWordPress公式テンプレートのTwenty Fourteenの記事ページで引数をダンプすると「/{wordpressまでのパス}/wp-content/themes/twentyfourteen/single.php」となっています。

上のコードは自作プラグインで実行したときの場合ですが、3行目でプラグインフォルダにある「inc/my_single_template.php」を指定し、それを返しています。これだけで任意のテンプレートが読み込まれるようになります。

アーカイブやカスタム投稿タイプで同じようにテンプレートを変更したい場合は、2行目のif文をそれぞれの条件分岐タグに変えます。条件分岐タグはこちらのページ『WordPressをカスタマイズするなら絶対覚えておきたい条件分岐やカスタム投稿タイプなどいろいろ』が見やすくて参考になるのでオススメです。

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/include-original-template/trackback/