WordPressでURL(パス)を取得する場合はget_template_directory_uriよりget_theme_file_uriが便利

WordPressでパスを取得する際、get_template_directory_uri
あるいはget_stylesheet_directory_uri
を使用するのは従来の方法でした。
しかしWordPress4.7からget_theme_file_uri
とget_theme_file_path
という関数が追加されました。この関数は従来のget_template_directory_uri
、get_stylesheet_directory_uri
と同様のパスを取得する機能に加え、より痒い所に手が届く関数になっています。
目次
get_theme_file_uri の機能
冒頭でも触れた通り、get_theme_file_uri
はテーマのパスを取得する関数で、これは従来のget_template_directory_uri
、get_stylesheet_directory_uri
と同じです。ちなみにget_template_directory_uri
とget_stylesheet_directory_uri
の違いは親テーマのパスを取得するかと子テーマのパスを取得するかです。
get_template_directory_uri
→ 親テーマのパスを取得get_stylesheet_directory_uri
→ 子テーマのパスを取得
このように従来の方法ではパスの取得という同じ目的でも親テーマか子テーマかで関数を使い分ける必要がありました。
get_theme_file_uri は親テーマと子テーマで使い分けの必要がない
一方、親テーマでget_theme_file_uri
を使ってファイルを読み込んでいる場合、同名のファイルが子テーマに存在すると、自動的にオーバーライドする機能を持っています。
子テーマで親テーマと同名のphpファイルを作成すると、子テーマを優先して読み込むのと同じです。これがcss・jsファイルやURL、画像などでも適用されるようになります。なので子テーマで特に読み込む記述をする必要がなく、同名のファイルを作成するだけでOKです。よりシンプルにテーマ作成ができるようになります。
さらには子テーマで指定したファイルで親テーマに同名ファイルがない場合は、そのまま子テーマのファイルが読み込まれるので、get_template_directory_uri
の代替としてWordPress4.7以降はget_theme_file_uri
を使用すれば良いことになります。
get_theme_file_uri の使い方
get_theme_file_uri( $file )
のように引数にテーマ直下以降のパスを指定して使用します。従来のパスの取得方法も参考として記載します。
// 例:cssの読み込み(WordPress4.7以前の方法)
wp_enqueue_style( 'glatch-styles', get_template_directory_uri() . '/assets/css/style.css' ), false );
// 例:cssの読み込み(WordPress4.7以降の方法)
wp_enqueue_style( 'glatch-styles', get_theme_file_uri( '/assets/css/style.css' ), false );
// 例:jsの読み込み(WordPress4.7以前の方法)
wp_enqueue_script( 'glatch-scripts', get_template_directory_uri() . '/assets/js/bundle.js' ), false );
// 例:jsの読み込み
wp_enqueue_script( 'glatch-scripts', get_theme_file_uri( '/assets/js/bundle.js' ), array(), false, true );
// 例:画像ファイルの読み込み
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/logo.png">
// 例:画像ファイルの読み込み
<img src="<?php echo get_theme_file_uri( '/assets/img/logo.png' ); ?>">
子テーマから親テーマのファイルを取得したい場合
子テーマから親テーマのファイルを取得したい場合は、get_parent_theme_file_uri
関数が同じくWordPress4.7で追加されましたので、こちらを使用します。
絶対パスで取得したい場合はget_theme_file_path
絶対パスで取得したい場合はget_theme_file_path
を使用します。こちらもget_theme_file_uri
と同じように子テーマでオーバーライドしてくれるようになります。
おわりに
get_theme_file_uri
は不特定多数向けにテーマ開発している開発者にとっては既に必須となっている関数です。get_theme_file_uri
を使っていると子テーマがぐんと開発しやすくなります。
もちろんクライアントワーク向けにもあえてget_template_directory_uri
を使う場面というのが想定できません(そういうケースがあればぜひ教えてください)ので、開発をしやすくするためにも積極的に使っていきたい関数です。
私たちGlatchはコーポレートサイト制作を得意とするWeb制作事務所です。
お気軽にご相談・お問い合わせください。