【WordPress】別階層のテンプレートを読み込む方法
こんにちは、koyaです。
Kourakuからダイレクトマーケティングを受けて先日OculusQuestを買ってしまいました。
VirtualDesktopで映画を見るのがとても快適です。
さらにゲームをするだけでめっちゃ運動になるので家から出ずに運動が出来ます。
外は暑いのでクーラーの効いてる部屋で汗を流しましょう。
今回はつい最近困った、WordPressで別階層のテンプレートを読み込む方法について書きたいと思います。
状況
WordPressのテーマファイルは基本、 上のようなファイル構造になっていますが、 上のようにフォルダを作成してその中にテンプレートを入れたい場合があると思います。
WordPressはテンプレート階層が決まっているため、このようにディレクトリを切ってしまうと自動で判別することが出来なくなってしまいます。
なので2枚目のような階層にすると、page-2.phpのように命名が正しくても適用されません。
解決方法
funcion.phpに下のコードを書き加えることで解決できます。
function get_custom_page_template( $page_template ) {
global $wp_query;
if(page_is_ancestorof('en')){
$page_template = dirname( __FILE__ ) . "/en/page-2.php";
}
return $page_template;
}
addfilter( 'page_template', 'get_custom_page_template' );
$page_template
部分は$single_template
や$archive_template
に変更することで別のテンプレートタイプにも使用が可能です。
まとめ
カスタム投稿や固定ページのテンプレートが増えると煩雑になりがちですが、今回の方法を使うことでテーマを区別することが可能です。
例で英語用のフォルダをあげましたが、明確に区分が違う場合はフォルダを分けた方がわかりやすいかもしれません。