WordPressで、themes編集で使用する、サイトURL、ホームURL、テーマへのURLの タグの記述方法

 

WordPressで、themes編集で使用する、サイトURL、ホームURL、テーマへのURLの タグの記述方法


 

【WP開発】URL取得関数(home_url / site_url)の書き方と使い分けまとめ

WordPressのテーマ開発において、URLのハードコーディングは厳禁です。サイト移転やディレクトリ構成の変更に強いテーマを作るために、適切なテンプレートタグを使用しましょう。

本記事では、技術者が実務で即座に使える「コピペ用コード」と、間違いやすい各関数の違いを解説します。

 


 

1. 【早見表】よく使うURL取得関数

用途に合わせて最適な関数を選択してください。

関数名取得できるURLの内容主な用途
home_url()「サイトアドレス」の設定値サイトのトップページへのリンク
site_url()「WordPressアドレス」の設定値WP管理画面やコアファイルへのパス
get_theme_file_uri()現在のテーマ(子テーマ優先)のパス画像、CSS、JSの読み込み
get_template_directory_uri()親テーマのディレクトリパス親テーマ固定の資産読み込み


 

 2. そのまま使える!コピペ用ソースコード

実務で頻出するコード例です。セキュリティ対策のため、出力時は esc_url() でエスケープ処理を行うのが技術者としてのベストプラクティスです。

■ サイトトップ(ホーム)へのリンク

一般ユーザーがアクセスする「サイトのトップページ」を指します。

PHP
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">ホームへ戻る</a>

Point: 引数に '/' を入れることで、末尾のスラッシュ(トレイルスラッシュ)を確実に付与できます。

■ WordPressインストール先(site_url)の取得

WordPressのコアファイルが置いてある場所を取得します。特定のシステムファイルや管理画面関連のリンクを生成する場合に使用します。

PHP
<a href="<?php echo esc_url( site_url( '/' ) ); ?>">WordPressインストール先</a>

注意: home_urlsite_url が異なる設定(WPをサブディレクトリにインストールしている等)の場合、こちらはシステム的な階層を返します。

■ テーマ内の画像・アセットの読み込み

get_theme_file_uri() を使うと、子テーマで画像が上書きされている場合に自動で切り替えてくれるため、保守性が高まります。

PHP
テスト<img src="<?php echo esc_url( get_theme_file_uri( '/assets/images/logo.png' ) );テスト ?>" alt="ロゴ">

■ CSS・JavaScriptの読み込み(functions.php内)

テーマのディレクトリURLを取得する際は、主に functions.php 内の wp_enqueue_scripts フックで使用します。

PHP
テストwp_enqueue_style( 'main-style', get_template_directory_uri() . '/style.css' );テスト
 

 

3. 技術者が知っておくべき「使い分け」の注意点

home_url()site_url() の違い

  • home_url(): 一般公開されているサイトのトップページURL(設定 > 一般 の「サイトアドレス」)。

  • site_url(): WordPressのコアファイルがインストールされている場所(設定 > 一般 の「WordPressアドレス」)。

  • 違いが出るケース: index.php をルートに置き、WP本体を /wp/ などの別ディレクトリにインストールしている場合、この2つの関数は異なるURLを返します。

子テーマ開発での使い分け

  • get_template_directory_uri(): 常に親テーマのディレクトリを指します。

  • get_stylesheet_directory_uri(): 現在有効なテーマ(子テーマなら子テーマ)のディレクトリを指します。

  • 推奨: 最近のWordPress開発では、子テーマでのオーバーライドを自動検知してくれる get_theme_file_uri() の使用が推奨されています。

     


 

4. まとめ:URL取得のチェックリスト

  1. エスケープしたか?echo esc_url(...) を使用しているか。

  2. 適切な関数か?:トップページなら home_url、システムパスなら site_url、テーマ内ファイルなら get_theme_file_uri か。

  3. 引数を利用しているか?home_url( '/contact/' ) のように引数を渡すと、スラッシュの有無を気にせず安全にURLを生成できます。



コメント