前提・実現したいこと
wordpressでテーマ作成中です。
functions.phpに記載する内容を分割し、"functions"というディレクトリ内に保存しています。
そして下記関数をfunctions.phpで実行すると同名の"functions"ディレクトリ内のファイル名を取得し
get_template_part()にて読み込むという処理をしております。
問題は、
直接functions.phpに下記関数を記載すれば動作するのですが、
別ファイル(仮にdev/test.php)に記述して読み込むと
__FILE__
や__DIR__
等がfunctions.phpの場所ではなくdev/test.phpの場所を取得してしまいます。
function.php側でfileScan();に__FILE__
等を引数に渡してあげればいいのですが、
なるべく記述を少なくしたく、何か良い手はないかと思い質問させていただきました。
###外部関数
php
1function fileScan() { 2 $thisFile = basename(__FILE__, ".php"); 3 $dir = scandir(__DIR__ .'/'. $thisFile); 4 5 foreach( $dir as $fileName ) { 6 if( !preg_match( '/^(.|..)$/', $fileName) && $fileName !== '.DS_Store' ) { 7 $fileName = basename($fileName, ".php"); 8 get_template_part($thisFile .'/'. $fileName); 9 } 10 } 11}
###追記
現在は下記のようにするのが一番記述が少ないかなと思っているのですが他に良い方法がありましたらお願いいたします。
fileScan(__FILE__);
php
1function fileScan($path) { 2 $thisFile = basename($path, ".php"); 3 $dir = scandir(dirname($path) .'/'. $thisFile); 4 5 foreach( $dir as $fileName ) { 6 if( !preg_match( '/^(.|..)$/', $fileName) && $fileName !== '.DS_Store' ) { 7 $fileName = basename($fileName, ".php"); 8 get_template_part($thisFile .'/'. $fileName); 9 } 10 } 11}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/22 02:59
2020/06/22 03:01