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で試しています。

親テーマ

parent-index.php
<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>
parent-style.css
/*!
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
*/

子テーマ

child-index.php
<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()にもおなじことが言えるのでこちらも使い分けをしましょう。