WordPress 4.7 get_theme_file_uri() get_theme_file_path()

WordPress 4.7で ファイルのURLやパスを記述するための便利な関数が追加される模様です。

これまで、ファイルをインクルードする場合や、wp_enqueue_style()等でURLを記述する場合、

<?php $hello_world_uri= get_template_directory_uri().'/hello-world.php'; ?>

といった記述を行っていると思いますが、 現在のようにチャイルドテーマサポートが当たり前の環境では、面倒くさいところがありました。

それは、チャイルドテーマに、hello-world.phpが存在する場合は、チャイルドテーマのファイルをインクルードしたいけど、存在しなかったら親テーマのhello-world.phpをインクルードするといった作業です。

テンプレートをインクルードする関数 get_template_part() 等ですと、チャイルドテーマにファイルが存在すれば チャイルドテーマのテンプレートをインクルードし、存在しなければ、親テーマのテンプレートをインクルードする仕組みがありますが、このようなファイル探査機能付きの関数が get_theme_file_uri() です。

これまで

if ( file_exists( get_stylesheet_directory().'/hello-world.php' ) ) {

 $hello_world_uri= get_stylesheet_directory_uri().'/hello-world.php';
}else{

 $hello_world_uri= get_template_directory_uri().'/hello-world.php';
}

等と記述していたものが、

$hello_world_uri= get_theme_file_uri('hello-world.php');

だけで済んでしまいます 便利ですね。

New Functions, Hooks, and Behaviour for Theme Developers in WordPress 4.7

wp_enqueue_script(
 'my-script',
 get_theme_file_uri( 'js/my-script.js' ),
 array(),
 filemtime( get_theme_file_path( 'js/my-script.js' ) )
);

これまで、一般的には style.css javascript等のリンクURLなどに追加されるクエリーストリングは、指定がなければ、ワードプレスのバージョン、指定されていればテーマのバージョンが使われてきました。

この機能は、テーマがアップデートした時に、確実にキャッシュが削除されるためのものですが、上記のようなコードを使う事でより粒度を細かく設定することが出来るようになりそうです。

テーマのアップデートに関わらず、ファイルが更新されれば、クエリーストリングが連動して変更されます。

これまでのように、スタイルがキャッシュされた場合、style.cssでコメント欄のバージョンを変更して、キャッシュを削除するようなこまい作業から解放されるかもしれません。

[emulsion_relate_posts]
モバイルバージョンを終了