
目次
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.com2. パスを追加
echo get_home_url( null, '/contact' );出力:
https://example.com/contact3. スキームを指定(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()でエスケープ