
目次
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()の引数
| 引数 | 型 | 説明 |
|---|---|---|
$path | string | URLに付け足すパス(ファイル名やディレクトリ) |
$scheme | string / null | スキーム(http, https, relativeなど) |
site_url()の戻り値
文字列(URL)
site_url()のよく使う例
1. サイトURLをそのまま取得
echo site_url();例:
https://example.com/wordpress2. サブパスを付ける
echo site_url('wp-login.php');出力:
https://example.com/wordpress/wp-login.php3. スキームを指定
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-adminhome_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=customsite_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()で出力