get_home_url()

get_home_url()
目次

get_home_url()とは?

get_home_url()
WordPressサイトのホームURL(フロントページのURL)を取得する関数
です。

例えば

https://example.com

https://example.com/blog

のように、サイトがどこに置かれているかを正確に取得できます。

get_home_url()はどこで使う?

  • テーマやプラグインでリンクを動的に生成したいとき
  • カスタムURLを組むとき
  • サブディレクトリにインストールしているサイトでも正しいURLを取得したいとき

site_url()との違い

とても混同しやすいので注意!

関数何を返す?
get_home_url()サイトの表示上のトップURL(WordPress設定の「ホーム」URL)
site_url()WordPressファイルが置かれているURL(「サイトアドレス」)

設定画面イメージ

管理画面 > 設定 > 一般設定 にこう書いてあります。

  • WordPress アドレス (URL)site_url()
    例)https://example.com/wordpress
  • サイトアドレス (URL)get_home_url()
    例)https://example.com

例:サブディレクトリにWordPressを置いている場合

設定画面:

  • WordPressアドレス:https://example.com/wordpress
  • サイトアドレス:https://example.com

この場合:

echo site_url(); // https://example.com/wordpress
echo get_home_url(); // https://example.com

この違いを理解することがとても重要です。

get_home_url()の基本の書式

get_home_url( int|null $blog_id = null, string $path = '', string|null $scheme = null )

get_home_url()の引数

引数説明
$blog_idint / nullマルチサイトの場合、特定のブログIDを指定(通常はnullで現在のサイト)
$pathstringURLに追加するパス(スラッシュから書く or ファイル名)
$schemestring / nullURLスキーム(http, https, relativeなど)

get_home_url()の戻り値

文字列(URL)

get_home_url()のよく使う例

1. ホームURLだけ取得

echo get_home_url();

例:

https://example.com

2. パスを追加

echo get_home_url( null, '/contact' );

出力:

https://example.com/contact

3. スキームを指定(https)

echo get_home_url( null, '', 'https' );

4. 相対URLを取得

echo get_home_url( null, 'about', 'relative' );

結果:

/about

スキーム($scheme)の使い分け

$schemeでURLスキームを制御できます。

スキーム説明
null(デフォルト)サイト設定に従う
httpHTTPで返す
httpsHTTPSで返す
relativeスキーム・ドメインなし(相対パス)

例:relativeスキーム

get_home_url( null, 'blog', 'relative' );

出力:

/blog

これはJavaScriptやCDN対応で相対リンクにしたいときに便利です。

get_home_url()のマルチサイトでの使い方

マルチサイト環境で他のサイトのURLを取得したい場合、$blog_idを指定します。

例:サイトID=3のホームURLを取得

echo get_home_url(3);

site_url()・home_url()・get_home_url()の違い

関数用途
site_url()WordPressインストールパス
home_url()フロントURL(get_home_url()と同じ)
get_home_url()フロントURL(マルチサイトIDを指定できる)

home_url()get_home_url()のラッパーです。

home_url()の書式

home_url( string $path = '', string|null $scheme = null )

マルチサイトで他サイトのURLを取る場合だけget_home_url()を使います。

フィルターフック

get_home_urlにはフィルターが用意されています。

フィルター例:URLにパラメータを追加

add_filter('home_url', function($url, $path, $orig_scheme, $blog_id) {
  return $url . '?ref=custom';
}, 10, 4);

結果:

https://example.com/?ref=custom

よくある用途

テーマでロゴリンク

<a href="<?php echo esc_url( get_home_url() ); ?>">
  <img src="..." alt="ロゴ">
</a>

カスタムページリンク

<a href="<?php echo esc_url( get_home_url(null, '/shop') ); ?>">
  ショップ
</a>

HTTPSに固定

echo get_home_url(null, '', 'https');

よくある質問

トップURLと管理画面URLは同じ?

違います。管理画面はget_admin_url()を使います。

サイトを引っ越しても大丈夫?

WordPress設定が正しければget_home_url()が自動で正しいURLを返します。

スラッシュが2重になる?

$pathの先頭にスラッシュをつけてもつけなくても自動調整されます。

get_home_url(null, '/about');
get_home_url(null, 'about');

どちらも同じURLが返ります。

応用例:条件分岐で表示

<?php
if ( is_user_logged_in() ) {
  echo '<a href="' . esc_url( get_home_url() ) . '">マイページへ戻る</a>';
} else {
  echo '<a href="' . esc_url( wp_login_url() ) . '">ログイン</a>';
}
?>

カスタム関数例

「ホームURLを常にhttpsで返す独自関数」を作る例:

function my_secure_home_url($path = '') {
  return get_home_url(null, $path, 'https');
}

get_home_url()のまとめ

  • get_home_url()はサイトのフロントURLを取得する関数
  • $pathでパス追加、$schemeでhttp/https切り替え
  • サブディレクトリ設置も自動で正しいURL
  • マルチサイト対応($blog_id指定)
  • home_url()get_home_url()の簡易版

ポイント

  • テーマのトップリンクで使う
  • スキーム指定に便利
  • 必ずesc_url()でエスケープ
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次