
目次
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.com
2. パスを付ける
echo home_url('shop');
結果:
https://example.com/shop
3. 先頭スラッシュをつける場合
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()