web-dev-qa-db-ja.com

get_parent_theme_file_pathとget_template_directory

私は v4.7で追加されたテーマ位置 を参照するための新しい関数について読んでいます。

tracチケット を読みます。私は彼らがなぜこれらの関数を作ったのか、そして子供のテーマで使うためのget_theme_file_path()の恩恵を理解しています。しかし、口頭での明確さとは別に、親テーマのファイルを参照するときにget_parent_theme_file_path()よりget_template_directory()を使う特別な理由がありますか?

4
Sirmontegu

Get_template_directory()よりもget_parent_theme_file_path()を使用する特別な理由はありますか

はい。この新機能にはフィルターが付いています

  • フィルタparent_theme_file_path
  • そしてファイルパスへの引数

get_parent_theme_file_path() sourceを見ると、ファイルがget_parent_theme_file_pathへの引数として与えられ、ファイルへのパスを返し、parent_theme_file_pathフィルタも含まれているように、get_template_directory()が追加機能付きで返されるだけです。上書きしてもいいです。

get_parent_theme_file_pathは、一貫性を保ち、子テーマを簡単に上書きできるようにするために導入されました。 get_template_directoryの代わりにこれを使用しないという意味はありません。

私はこれらの関数について post を書きました。

ユースケース:

次のようにget_template_directoryを使用してテーマにファイルを含めるとします。

include(get_template_directory().'/inc/bk.php'); /*../themes/bk-theme/inc/bk.php */

子テーマでbk.phpをオーバーライドしたい場合は、 可能ではありません

新しい機能で同じファイルをインクルードした場合

include(get_parent_theme_file_path('inc/bk.php')); /*../bk-theme/inc/bk.php */

次のようにparent_theme_file_pathを使用すると、このテーマを子テーマに簡単に上書きできます。

add_filter('parent_theme_file_path','bk_257597_parent_theme_file',10,2);
function bk_257597_parent_theme_file($path,$file){
 if('inc/bk.php' == $file) {
  //do something
  $file = 'my-file';
  $path = 'my-path'.$file;
 }
 return $path;
}
3
bravokeyl