WordPressのテーマ開発で、CSSやJSのURLをセットするときに使うget_template_directory_uri()という関数があります。get_template_directory_uri()はWordPressテーマディレクトリまでのURLを取得する関数ですが、似たような関数でWordPressテーマディレクトリまでのURLを取得できるget_stylesheet_directory_uri()という関数もあります。WordPressテーマディレクトリまでURLを取得できるget_template_directory_uri()とget_stylesheet_directory_uri()にはどのような違いがあるのでしょう。
2つはどのように違うのか
get_template_directory_uri()とget_stylesheet_directory_uri()の違いは、WordPressテーマの親子関係にあります。get_template_directory_uri()は有効化しているWordPressテーマもしくは親テーマのテーマディレクトリURLを取得し、get_stylesheet_directory_uri()は、有効化しているWordPressテーマのテーマディレクトリURLを取得します。
get_template_directory_uri()をもう少し細かくいうと、親テーマで使用した場合は、get_stylesheet_directory_uri()と変わらずに有効化してあるWordPressテーマのテーマディレクトリURLの取得します。小テーマで使用した場合は、子テーマのstyle.cssに書かれている「Template」をみてテーマディレクトリURLを取得しています。
この違いをみるために以下のようなWordPressのテスト親テーマ、テスト子テーマを作りました。Gistのファイル名の都合でparentとchildがついてますが、実際にためしているときは、親テーマ・小テーマともにindex.phpとstyle.cssで試しています。
親テーマ
<html>
<body>
<h1>親テーマの場合</h1>
<h2>get_template_directory_uri()の結果</h2>
<?php echo get_template_directory_uri(); ?>
<h2>get_stylesheet_directory_uri()の結果</h2>
<?php echo get_stylesheet_directory_uri(); ?>
</body>
</html>
/*!
Theme Name: Test
Theme URI: https://samurai-project.com
Author: Kensho Tasaki
Author URI: https://samurai-project.com
Description: WordPress test theme
Version: 1.0.0License: GNU General Public License
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: test
*/
子テーマ
<html>
<body>
<h1>テーマの場合</h1>
<h2>get_template_directory_uri()の結果</h2>
<?php echo get_template_directory_uri(); ?>
<h2>get_stylesheet_directory_uri()の結果</h2>
<?php echo get_stylesheet_directory_uri(); ?>
</body>
</html>
/*!
Theme Name: Test Child
Theme URI: https://samurai-project.com
Author: Kensho Tasaki
Author URI: https://samurai-project.com
Description: WordPress test theme
Version: 1.0.0
License: GNU General Public License
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: test
*/
親テーマの場合
get_template_directory_uri()とget_stylesheet_directory_uri()どちらも同じ結果です。
子テーマの場合
get_template_directory_uri()とget_stylesheet_directory_uri()が違います。get_template_directory_uri()は親テーマのテーマディレクトリURLを出力しget_stylesheet_directory_uri()は子テーマのテーマディレクトリURLを出力しています。
まとめ
get_template_directory_uri()とget_stylesheet_directory_uri()の違いについて紹介しました。WordPressのテーマ開発をするときはget_template_directory_uri()は親テーマで使い、get_stylesheet_directory_uri()子テーマで使うといった感じに分けるといいでしょう。
WordPressテーマのディレクトリパスを取得するget_template_directory()とget_stylesheet_directory()にもおなじことが言えるのでこちらも使い分けをしましょう。