質問: ■環境情報 ・テーマ:Hueman Pro ・WordPressバージョン:WordPress 5.1.1 ■実現したいこと 固定ページとして作成したページに、page-[ID].phpのファイル名で固有のテンプレファイルを作成・適用し、そのページだけPHPでの動的生成(DBサーバから情報取得)を実施したい、と考えています。 ■詳細 固定ページ作成後、固定ページ用テンプレ(page.php)をコピーして固有テンプレファイル(page-[ID].php)を作成し、対象ページのテンプレとして適用されているところまでは確認しています。 (上記元ネタとした)page.phpのコンテンツ箇所は 以下コードだったので、 (参照先の「tmpl/page-tmpl」は、その他の固定ページも参照しているので、そのものは触らず) page-tmpl.phpをコピーしてpage2-tmpl.php(など)としてtmpl内に配置した上で、 page-[ID].phpのコードを'tmpl/page2-tmpl'とすれば、 コンテンツ箇所の参照先はpage2-tmplになるのかな(その上でpage2-tmpl.phpを好き勝手触ろう)、 と思っていたのですが、ならず。 (明確にそれと確認したわけではないのですが、表示的におそらく)index.phpをテンプレファイルとしているであろう画面が表示されてしまいます。 page-[ID].phpのコンテンツ箇所の参照先を'tmpl/page-tmpl'や'tmpl/page2-tmpl'とせず、 当ファイル内に直接書くことなどを試したのですが、デザイン崩れや、画面が白くなるなどでうまく行かず...断念してしまいました。 page-[ID].phpなどでテンプレファイルを作ることはできるけど、 テーマファイルのテンプレファイル(?)は好き勝手に作れない or 別の場所に新規ファイル作った旨情報を渡さないといけないのかな、などとも考えたのですが...いずれも解決には至らず、手詰まっている現状です。 解決策・アドバイス等、ありましたら、教えていただきたく、お願いいたします。 解決できないのであれば、その他実現方法がありましたら、別途教えて頂きたいです。 よろしくお願いいたします。 ※情報に不足などあれば、その旨ご教示ください。
回答: 許可されたものを入れないと'tmpl/index-tmpl'として表示するようになっていますね。 ``` function hu_get_content( $tmpl = 'tmpl/index-tmpl', $print = true ) { $tmpl = hu_is_authorized_tmpl( $tmpl ) ? $tmpl : 'tmpl/index-tmpl'; ``` ここの判定に使われている hu_is_authorized_tmpl() 関数内で 'hu_content_map'フィルターが利用可能な文字列の配列を返しているので、 add_filter() 関数を使ってフィルタを追加すれば他のファイルもテンプレートとして利用できそうです。