
目次
get_admin_url()とは?
get_admin_url()
は
WordPress管理画面(wp-admin
ディレクトリ)のURLを取得する関数
です。
たとえば、WordPressをサブディレクトリに設置したり、マルチサイトを構築した場合も、正しい管理画面URLを動的に取得できます。
get_admin_url()の基本の書式
get_admin_url( int|null $blog_id = null, string $path = '', string $scheme = 'admin' )
get_admin_url()の引数
引数 | 型 | 説明 |
---|---|---|
$blog_id | int / null | マルチサイトのブログID。通常はnull で現在のサイト |
$path | string | 追加するパス(例:options-general.php ) |
$scheme | string | URLスキーム(http , https , admin ) |
get_admin_url()の戻り値
文字列(URL)
get_admin_url()の動作例
1. 基本例(管理画面トップURL)
echo get_admin_url();
出力:
https://example.com/wp-admin/
(SSL有効サイトの場合)
2. 設定ページへのURL
echo get_admin_url( null, 'options-general.php' );
出力:
https://example.com/wp-admin/options-general.php
3. 特定ページ+パラメータ
$url = get_admin_url( null, 'edit.php?post_type=page' );
出力:
https://example.com/wp-admin/edit.php?post_type=page
スキーム($scheme)の使い分け
$scheme
はURLスキーム(プロトコル)を指定できます。
スキーム | 説明 |
---|---|
admin (デフォルト) | 管理画面に設定されたスキーム(通常はhttps) |
http | HTTP |
https | HTTPS |
例:強制https
echo get_admin_url( null, '', 'https' );
マルチサイトで使う
マルチサイトでは特定のサイトの管理画面URLを取得できます。
例:ブログID=2の管理画面トップ
$url = get_admin_url(2);
出力:
https://subsite.example.com/wp-admin/
site_url()との違い
よく混同されるsite_url()
との違いを整理します。
関数 | 用途 |
---|---|
site_url() | サイトのルートURL(wp-login.php やwp-content など) |
admin_url() | 現在のサイトの管理画面URL |
get_admin_url() | 管理画面URLを取得(マルチサイト用も対応) |
admin_url()との違い
admin_url()
はシングルサイト用です。
- 通常は
admin_url()
- マルチサイト対応で他サイトURLを取るときは
get_admin_url()
admin_url()の例
echo admin_url( 'options-general.php' );
同等のget_admin_url()
は:
echo get_admin_url( null, 'options-general.php' );
結果は同じURL。
フィルターフック
この関数は内部でadmin_url
フィルターを呼びます。
フィルターの例:URLにクエリを追加
add_filter('admin_url', function($url, $path, $blog_id){
return $url . '?utm_source=custom';
}, 10, 3);
結果:
https://example.com/wp-admin/?utm_source=custom
get_admin_url()のよくある使い方
投稿一覧へのリンクを作る
$url = get_admin_url( null, 'edit.php' );
echo '<a href="' . esc_url($url) . '">投稿一覧を見る</a>';
新規投稿画面リンク
$url = get_admin_url( null, 'post-new.php' );
カスタム投稿タイプ編集画面
$url = get_admin_url( null, 'edit.php?post_type=product' );
セキュリティ
この関数はURLだけを返すので、権限チェックは別途行う必要があります。
例:
if (current_user_can('edit_posts')) {
echo '<a href="' . esc_url(get_admin_url(null, 'edit.php')) . '">投稿管理</a>';
}
実用サンプル:管理画面メニューへの誘導
たとえば「設定を更新してください」というメッセージを出すとき
<?php
if ( current_user_can('manage_options') ) {
$url = get_admin_url(null, 'options-general.php');
echo '<div class="notice notice-warning">';
echo '<p>サイト設定が未完了です。<a href="' . esc_url($url) . '">設定画面を開く</a></p>';
echo '</div>';
}
?>
get_admin_url()のよくある質問
- SSL有効サイトでも正しいURLが出ますか?
-
$scheme
を省略すれば自動でSSL対応します。 - サブディレクトリ設置も対応しますか?
-
対応します。WordPressの設置場所を自動認識します。
- URLに
/wp-admin/
がつかないことはありますか? -
基本的に管理画面URLは
/wp-admin/
固定です。
site_url()とadmin_url()の関係まとめ
関数 | 返すURL |
---|---|
site_url() | WordPressルートURL |
admin_url() | 現在のサイトの管理画面URL |
get_admin_url() | 特定ブログIDの管理画面URL |
他の関連関数
関数 | 用途 |
---|---|
home_url() | サイトホームURL |
site_url() | WordPressインストールURL |
admin_url() | 現在の管理画面URL |
network_admin_url() | ネットワーク管理画面URL(マルチサイト) |
user_admin_url() | ユーザー管理画面URL(マルチサイト) |
実用コード例:条件つきリンク
管理者だけ管理画面リンクを表示
<?php
if ( current_user_can('manage_options') ) {
$url = get_admin_url();
echo '<a href="' . esc_url($url) . '">管理画面に移動</a>';
}
?>
get_admin_url()のまとめ
get_admin_url()
は管理画面URLを取得する関数- マルチサイトで特定サイトのURLも取れる
$path
で個別ページも指定できる$scheme
でhttp/https切替- フィルターでURL変更可能
ポイント
- マルチサイトなら
get_admin_url()
、シングルサイトならadmin_url()
でも可 - URLだけなので権限チェックは別途行う
esc_url()
で必ずエスケープ