home_url()

home_url()
目次

home_url()とは?

home_url()
WordPressサイトの「ホームURL」を取得する関数
です。

この「ホームURL」とは、管理画面の
「設定 > 一般 > サイトアドレス (URL)」
に設定されているURLのことです。

サイトアドレスとWordPressアドレスの違い

とても混同しやすい重要なポイントです。

設定項目どこで設定する?関数
WordPressアドレス (URL)WordPressファイルが置かれている場所site_url()
サイトアドレス (URL)サイト訪問者が見るトップURLhome_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()の引数

引数説明
$pathstringURLに付け足すパス(オプション)
$schemestring / nullURLスキーム(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()
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次