
目次
get_site_url()とは?
get_site_url() は
WordPressがインストールされているディレクトリのURLを取得する関数
です。
「WordPressがどこに置いてあるのか」を正確に教えてくれる関数です。
よくある誤解:「ホームURL」とは違う
WordPressには似たような関数がたくさんあります。
| 関数 | 返すURL |
|---|---|
get_home_url() | サイトのトップURL(「表示上のホームページ」) |
get_site_url() | WordPressが実際に置かれているURL |
この違いが最も重要です。
設定画面のイメージ
管理画面 > 設定 > 一般設定
| 設定項目 | 関数 |
|---|---|
| WordPressアドレス (URL) | get_site_url() |
| サイトアドレス (URL) | get_home_url() |
例:WordPressをサブディレクトリに置いた場合
設定画面の設定:
- WordPressアドレス:
https://example.com/wordpress - サイトアドレス:
https://example.com
この場合:
echo get_site_url(); // https://example.com/wordpress
echo get_home_url(); // https://example.comこの2つは別の値を返すので注意。
get_site_url()の基本の書式
get_site_url(
int|null $blog_id = null,
string $path = '',
string|null $scheme = null
)get_site_url()の引数
| 引数 | 型 | 説明 |
|---|---|---|
$blog_id | int / null | マルチサイトのブログID(通常はnullで現在のサイト) |
$path | string | 追加するパス(ファイルやディレクトリ名) |
$scheme | string / null | URLスキーム(http, https, relativeなど) |
get_site_url()の戻り値
文字列(URL)
get_site_url()の動作例
1. 基本
echo get_site_url();出力例:
https://example.com/wordpress2. パスを追加
echo get_site_url( null, 'wp-login.php' );出力:
https://example.com/wordpress/wp-login.php3. HTTPSで取得
echo get_site_url( null, '', 'https' );4. 相対URLを取得
echo get_site_url( null, 'wp-content', 'relative' );結果:
/wordpress/wp-contentスキーム($scheme)の使い分け
| スキーム | 説明 |
|---|---|
null(デフォルト) | サイト設定に従う |
http | HTTP固定 |
https | HTTPS固定 |
relative | ドメイン・スキームなし(相対パス) |
マルチサイトでの利用
$blog_idを指定すると、マルチサイトの別サイトのURLを取得できます。
例:ブログID=2のWordPressアドレス
echo get_site_url(2);home_url()との違い
混同しやすいので表で比較します。
| 関数 | 用途 |
|---|---|
get_site_url() | WordPressファイルが置いてあるURL |
get_home_url() | サイトのトップURL(一般公開URL) |
管理画面URLを取得する
get_site_url()のパスにwp-admin/を付けることで管理画面URLを作れます。
echo get_site_url(null, 'wp-admin/');結果:
https://example.com/wordpress/wp-admin/ただし、管理画面URLを取得する場合はget_admin_url()を使う方が推奨されます。
フィルターフック
この関数は内部でsite_urlフィルターを通します。
フィルターの例:クエリを強制追加
add_filter('site_url', function($url, $path, $orig_scheme, $blog_id){
return $url . '?ref=custom';
}, 10, 4);結果:
https://example.com/wordpress/?ref=customよく使う用途
wp-login.phpのURLを作る
echo get_site_url( null, 'wp-login.php' );カスタムスクリプトにリンク
echo get_site_url( null, 'custom-script.php' );CSSやJSのルートパスを組む
echo get_site_url( null, 'wp-content/themes/mytheme/assets/' );get_site_url()のよくある質問
- サイト移行したら変わる?
-
WordPressアドレス設定が変わればURLも変わります。
- スラッシュはどうなる?
-
$pathに先頭スラッシュを付けても自動で調整されます。get_site_url(null, '/wp-login.php'); get_site_url(null, 'wp-login.php');→どちらも同じ。
- URLに言語コードはつかない?
-
基本的につきません。多言語対応はプラグイン側で処理します。
応用:管理者だけにリンク表示
<?php
if (current_user_can('manage_options')) {
$url = get_site_url(null, 'wp-admin/');
echo '<a href="' . esc_url($url) . '">管理画面へ</a>';
}
?>実用コード:相対URLを取得
$url = get_site_url(null, 'wp-content/uploads', 'relative');
// 出力: /wordpress/wp-content/uploadsget_site_url()の関連関数まとめ
| 関数 | 用途 |
|---|---|
get_home_url() | サイトトップURL |
get_site_url() | WordPress設置ディレクトリURL |
home_url() | get_home_url()のショートカット |
site_url() | get_site_url()のショートカット |
get_admin_url() | 管理画面URL |
network_site_url() | ネットワークサイトURL(マルチサイト用) |
get_site_url()のまとめ
get_site_url()はWordPress設置場所のURLを取得する関数$pathでサブパス指定、$schemeでhttp/https/relative切替home_url()とは役割が異なる(ホーム vs インストールディレクトリ)- マルチサイトにも対応
ポイント
- 管理画面やコアファイルURLを組むときに使う
- 公開URLには
get_home_url()を使う esc_url()で必ずエスケープ