site_url()

site_url()
目次

site_url()とは?

site_url()
WordPressのインストールディレクトリのURLを取得する関数
です。

つまり、WordPressが実際に置かれている場所のURLを返します。

ホームURLとの違い

とても重要なポイントなので最初に整理しておきましょう。

関数返すURL
home_url()サイトのトップページURL(訪問者が見るフロントURL)
site_url()WordPressコアファイルが置かれているURL

設定画面イメージ

管理画面 > 設定 > 一般設定 にこう書かれています。

  • WordPressアドレス (URL)
    site_url()が返す値
  • サイトアドレス (URL)
    home_url()が返す値

例:サブディレクトリにインストール

  • WordPressアドレス: https://example.com/wordpress
  • サイトアドレス: https://example.com

この場合:

echo site_url(); // https://example.com/wordpress
echo home_url(); // https://example.com

この違いは非常に重要です。

site_url()の基本の書式

site_url( string $path = '', string|null $scheme = null )

site_url()の引数

引数説明
$pathstringURLに付け足すパス(ファイル名やディレクトリ)
$schemestring / nullスキーム(http, https, relativeなど)

site_url()の戻り値

文字列(URL)

site_url()のよく使う例

1. サイトURLをそのまま取得

echo site_url();

例:

https://example.com/wordpress

2. サブパスを付ける

echo site_url('wp-login.php');

出力:

https://example.com/wordpress/wp-login.php

3. スキームを指定

echo site_url('', 'https');

4. 相対URLを取得

echo site_url('wp-content', 'relative');

出力:

/wordpress/wp-content

スキーム($scheme)の使い分け

説明
null(デフォルト)サイト設定に従う
'http'HTTP固定
'https'HTTPS固定
'relative'スキーム・ドメインなし(相対パス)

例:relativeスキーム

site_url('wp-admin', 'relative');

出力:

/wordpress/wp-admin

home_url()との違い再確認

関数用途
site_url()WordPressインストールディレクトリ
home_url()サイトのトップURL(訪問者がアクセスするURL)

get_site_url()との関係

site_url()get_site_url()のラッパーです。

get_site_url()はマルチサイトでブログIDを指定できます。

get_site_url()の書式

get_site_url( int|null $blog_id = null, string $path = '', string|null $scheme = null )

シングルサイトではsite_url()で十分。

フィルターフック

site_url()は内部で**site_urlフィルター**を通ります。

フィルター例:URLを書き換える

add_filter('site_url', function($url, $path, $scheme){
    return $url . '?ref=custom';
}, 10, 3);

結果:

https://example.com/wordpress/?ref=custom

site_url()のよくある用途

ログインページのURL

echo site_url('wp-login.php');

管理画面URL

echo site_url('wp-admin/');

(※管理画面にはadmin_url()を使う方がベターです)

WordPressファイルの絶対URL

echo site_url('wp-includes/js/');

セキュリティ

site_url()URLだけを返す関数なので、
権限は不要です。

出力時は必ずesc_url()でエスケープしましょう。

応用:条件でリンク出し分け

管理者だけに管理画面リンクを表示

<?php
if (current_user_can('manage_options')) {
    echo '<a href="' . esc_url( site_url('wp-admin/') ) . '">管理画面</a>';
}
?>

site_url()のよくある質問

サイト移行で変わる?

設定の「WordPressアドレス」を変更すれば自動的に新しいURLを返します。

URLにスラッシュが重複する?

$pathの先頭スラッシュはあってもなくても自動調整されます。

site_url('/wp-login.php');
site_url('wp-login.php');

→同じ結果。

スキームをhttp/httpsで固定できる?

$schemeを指定します。

site_url('', 'https');

関連関数まとめ

関数用途
home_url()サイトトップURL
site_url()WordPress設置ディレクトリURL
admin_url()管理画面URL
network_site_url()マルチサイトネットワークURL
get_site_url()マルチサイト用・任意ブログID対応

実用サンプル:テーマでログインリンク

<a href="<?php echo esc_url( site_url('wp-login.php') ); ?>">ログイン</a>

テーマ開発での注意点

  • フロントURLが必要ならhome_url()
  • WordPressファイルのURLはsite_url()
  • 必ずesc_url()でエスケープ

site_url()のまとめ

  • site_url()は「WordPressインストールURL」を取得する関数
  • $pathでサブパス追加
  • $schemeでスキーム指定
  • サブディレクトリ対応
  • home_url()と混同しない

ポイント

  • サイトトップURL→home_url()
  • WordPress設置URL→site_url()
  • 必ずesc_url()で出力
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次