
目次
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_id | int / null | マルチサイトの場合、特定のブログIDを指定(通常はnullで現在のサイト) |
$path | string | URLに追加するパス(スラッシュから書く or ファイル名) |
$scheme | string / null | URLスキーム(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 (デフォルト) | サイト設定に従う |
http | HTTPで返す |
https | HTTPSで返す |
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()
でエスケープ