
目次
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/wordpress
2. パスを追加
echo get_site_url( null, 'wp-login.php' );
出力:
https://example.com/wordpress/wp-login.php
3. 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/uploads
get_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()
で必ずエスケープ