テンプレートタグでHOMEへのリンクやテーマフォルダへのリンクを結構書くことが多くて、忘れっぽいのでメモ。※テーマのURLは親テーマの場合と子テーマの場合では求め方が違います。
親テーマの場合
親テーマフォルダ内の functions.php に以下を書いて、グローバル変数を定義しておくと便利だと思う。
// 親テーマフォルダへのパス。末尾のスラッシュ無し。
define('THEME_PATH', get_template_directory());
// 親テーマフォルダへのURL。末尾のスラッシュ無し。
define('THEME_URI', get_template_directory_uri());
子テーマの場合
子テーマのフォルダは親テーマの求め方と違う。
下記のコードを子テーマフォルダ内の functions.php に書いて、グローバル変数を定義しておくと便利だと思う。
// 子テーマフォルダへのパス。末尾のスラッシュ無し。
define('THEME_PATH', get_stylesheet_directory());
// 子テーマフォルダへのURL。末尾のスラッシュ無し。
define('THEME_URI', get_stylesheet_directory_uri());
実際に使うとき
※安全のため、タグの属性値内で使うときは esc_url() 関数も使うようにする。
<!-- ホームページのURL -->
<a href="<?php echo esc_url(home_url('/')); ?>">HOME</a>
<!-- テーマファイルのフォルダ下「/img/pic.png」を表示する場合 -->
<img src="<?php echo esc_url(THEME_URI); ?>/img/pic.png" />esc_url() 関数って何?
要は「URLっぽくない文字列は削除、あとURLっぽかったら属性値で使えるように変換」してくれる関数です。何かの拍子に変な値が入っても安全化できます。
テキストや属性などのURLを無害化する時に用いる関数です。ホワイトリストに登録されているプロトコル (デフォルトでは、http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet) 以外のURLを拒絶し、無効なキャラクタを除外し、危険なキャラクタを削除します。 この関数はキャラクタをHTMLエンティティとしてエンコードし、 (X)HTML または XML ドキュメントを作成する時に用います。アンド記号 (&) とシングルクォート (') はそれぞれ (&, ') という形に変換します。 この関数は非推奨となった clean_url() の代わりに用いるものです。
