WordPressのカスタマイズをするとき、親テーマと子テーマのどちらのディレクトリを参照するかが問題になることがあります。
faviconなどの共通ファイルなどは親テーマフォルダ内にあることが多いので、PHPの書き換えが必要になったりします。
これを、header.phpなどの一般的なテンプレートファイルを変更するだけで、子テーマフォルダ内のファイルを参照できるようにするのが今回の目的です。
テーマディレクトリを取得する関数
テーマディレクトリを取得する関数には get_stylesheet_directory_uri() と get_template_directory_uri() があります。
この2つの違いはスタイルシートがあるディレクトリを取得するか、テンプレートファイルがあるディレクトリを参照するかの違いです。
基本的にテーマディレクトリを取得するには get_template_directory_uri() を利用すればいいのですが、子テーマフォルダ内のfunctions.phpなどでこれを利用すると、親テーマのディレクトリを取得してしまいます。
そこで、子テーマのディレクトリを取得するために get_stylesheet_directory_uri() が利用されます。
ディレクトリ内の特定のファイルを選択するときは関数で取得したURIにスラッシュ(/)をつけて記述します。
例えば、header.phpなどで、テーマディレクトリの中のimagesフォルダの中のfavicon.icoをファビコンとして選択するには次のような形になります。
<link rel="shortcut icon" href="<?php echo get_stylesheet_directory_uri(); ?>/images/favicon.ico" />
関数の戻り値にはスラッシュが含まれていないので、コーディングするときに付け加える必要があります。
ポイント
- 親テーマフォルダを取得するときは get_template_directory_uri() を使う。
- 子テーマフォルダを取得するときは get_stylesheet_directory_uri() を使う。
- 取得したURIには/(スラッシュ)が付いていないため、必要に応じて付け加える。