WordPressで子テーマ使用時にショートコードで記事本文中に任意のテンプレートを読み込む方法

2015年8月21日

最近はメインサイトもサテライトサイトもほとんどWordPressで構築しています。

そういうこともあって何かとWordPressを触っている日々を過ごしているわけですけども、先日ちょっとハマったことがあったんですね。

固定ページ・投稿ページの任意の場所へphpファイルを読み込むってことを
結構頻繁にやるのですが、基本的には下記のソースで事が足りるわけです。

ただ、これを固定ページ(page.php)投稿ページ(single.php)へ直接書いてしまうと
全投稿ページ・固定ページへ反映されてしまうことになります。

「じゃあ分岐しちゃえば?」

確かにそうなんですが、その方法だと各記事本文の前か後にしか挿入できないんです
となると本文中にショートコードを使って読み込んでやるという方法しか選択肢がなくなってきます。

で、いろいろ調べてみるとあるんですね方法が。
一番多く見受けられたものがこちらの方法でした。

1.functions.phpに以下を記述

2.読み込みたいphpファイルをショートコードで指定

以上でOKのはずなんですが…
テンプレートが読み込めず何にも表示されず…

「何でやねん」と思って調べてみると
get_template()がどうやらダメっぽかったんです。

何がダメかというと
get_template()は親テーマのディレクトリを返してしまうから。

WordPressを使用する時は必ずといっていいほど子テーマを使用しているので
親テーマのディレクトリが返ってくるのは都合が悪いわけです。

ということで親テーマのディレクトリではなく子テーマのディレクトリを返すように
イジったものがこちらです。

7行目をget_template_part($file);に変更しただけです。

あとは上記で説明した通り、ファイルを読み込みたい場所で[myphp file=’ファイル名’]と挿れてやればOKです。

function.phpに一度書けばどのページでも使えるのでめちゃくちゃ楽になります。

テンプレートをわざわざイジるほどでもなく、部分的に別テンプレートを
挿れたい場面は結構あるかと思いますのでぜひ活用してみてください。

WordPress

Posted by yusuke