get_admin_url()

get_admin_url()
目次

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_idint / nullマルチサイトのブログID。通常はnullで現在のサイト
$pathstring追加するパス(例:options-general.php
$schemestringURLスキーム(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)
httpHTTP
httpsHTTPS

例:強制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.phpwp-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()で必ずエスケープ
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次