get_site_url()

get_site_url()
目次

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_idint / nullマルチサイトのブログID(通常はnullで現在のサイト)
$pathstring追加するパス(ファイルやディレクトリ名)
$schemestring / nullURLスキーム(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(デフォルト)サイト設定に従う
httpHTTP固定
httpsHTTPS固定
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()で必ずエスケープ
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次