
目次
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/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()
で出力