
目次
home_url()とは?
home_url() は
WordPressサイトの「ホームURL」を取得する関数
です。
この「ホームURL」とは、管理画面の
「設定 > 一般 > サイトアドレス (URL)」
に設定されているURLのことです。
サイトアドレスとWordPressアドレスの違い
とても混同しやすい重要なポイントです。
| 設定項目 | どこで設定する? | 関数 |
|---|---|---|
| WordPressアドレス (URL) | WordPressファイルが置かれている場所 | site_url() |
| サイトアドレス (URL) | サイト訪問者が見るトップURL | home_url() |
例:サブディレクトリにインストール
- WordPressアドレス:
https://example.com/wordpress - サイトアドレス:
https://example.com
この場合:
echo site_url(); // https://example.com/wordpress
echo home_url(); // https://example.comこの違いを理解しておくことがとても大切です。
home_url()の基本の書式
home_url( string $path = '', string|null $scheme = null )home_url()の引数
| 引数 | 型 | 説明 |
|---|---|---|
$path | string | URLに付け足すパス(オプション) |
$scheme | string / null | URLスキーム(http, https, relativeなど) |
home_url()の戻り値
文字列(URL)
home_url()のよく使う例
1. サイトのホームURLを取得
echo home_url();結果:
https://example.com2. パスを付ける
echo home_url('shop');結果:
https://example.com/shop3. 先頭スラッシュをつける場合
echo home_url('/shop');先頭スラッシュはあってもなくても同じ結果になります。
4. HTTPSを強制する
echo home_url('', 'https');5. 相対URLにする
echo home_url('about', 'relative');結果:
/about$schemeの使い分け
| 値 | 説明 |
|---|---|
null(デフォルト) | サイト設定に従う |
'http' | HTTPスキームを使う |
'https' | HTTPSスキームを使う |
'relative' | スキームとドメインなし(相対パス) |
get_home_url()との違い
home_url()は実はget_home_url()のラッパー関数
です。
get_home_url()はマルチサイト用にブログIDを指定できますが、home_url()は現在のサイトのみ対象です。
get_home_url()の書式
get_home_url( int|null $blog_id = null, string $path = '', string|null $scheme = null )マルチサイトで他サイトのURLを取るときはget_home_url()を使います。
フィルターフック
home_url()は内部で**home_urlフィルター**を通ります。
フィルターの例:URLにクエリパラメータを追加
add_filter('home_url', function($url, $path, $orig_scheme){
return $url . '?ref=custom';
}, 10, 3);よく使う用途
サイトトップへのリンク
<a href="<?php echo esc_url( home_url() ); ?>">トップページへ戻る</a>サイト内ページへのリンク
<a href="<?php echo esc_url( home_url('contact') ); ?>">お問い合わせ</a>カスタムページ
<a href="<?php echo esc_url( home_url('shop/category/sale') ); ?>">セール</a>home_url()のよくある質問
- サイトをサブディレクトリから移動したらどうなる?
-
設定の「サイトアドレス (URL)」を変更すれば自動的に新しいURLが返るようになります。
- URLにスラッシュが重複しない?
-
home_url()は先頭・末尾のスラッシュを自動調整します。例:
home_url('/contact'); home_url('contact');→結果は同じです。
- 相対パスはどんなときに使う?
-
スキームレスにしたいとき(CDN対応やJS処理時など)
home_url('assets/css/style.css', 'relative'); // 出力: /assets/css/style.css
応用:スキーム指定
HTTPS固定
echo home_url('', 'https');相対パス
echo home_url('blog', 'relative');結果:
/blogサイトURLを組むのに便利な関数
| 関数 | 用途 |
|---|---|
home_url() | サイトトップURL |
site_url() | WordPressインストールディレクトリURL |
admin_url() | 管理画面URL |
network_home_url() | マルチサイトネットワークトップURL |
get_home_url() | マルチサイト用・任意ブログID対応 |
実用サンプル:メニューリンク
<ul>
<li><a href="<?php echo esc_url( home_url() ); ?>">ホーム</a></li>
<li><a href="<?php echo esc_url( home_url('blog') ); ?>">ブログ</a></li>
<li><a href="<?php echo esc_url( home_url('contact') ); ?>">お問い合わせ</a></li>
</ul>
セキュリティ
出力時は必ずesc_url()を使ってエスケープしましょう。
例:
$url = home_url('contact');
echo '<a href="' . esc_url($url) . '">お問い合わせ</a>';home_url()のまとめ
home_url()は「サイトトップURL」を取得する関数$pathでサブパスを付ける$schemeでhttp/https/relative指定が可能- サブディレクトリ設置にも対応
get_home_url()の簡易版として便利
ポイント
- 公開URLには
home_url() - WordPress設置URLは
site_url() - マルチサイト用には
get_home_url()