MENU

admin_url()

admin_url() は、WordPress の管理画面(ダッシュボード)内の特定のページへの URL を取得するための関数です。

この関数を使うことで、環境に依存せずに適切な管理画面の URL を取得できるため、プラグインやテーマのカスタマイズ時に便利です。特に、wp-admin フォルダの位置が変更される可能性がある環境でも正しく URL を生成できるため、ハードコーディングを避けたい場合に有効です。

目次

機能の説明

admin_url() の役割

admin_url() は、WordPress の管理画面(wp-admin/)の URL を取得し、必要に応じて特定の管理ページへのパスを追加できます。

主な用途

  • プラグインやテーマで管理画面へのリンクを動的に生成
  • 管理者向けのカスタムメニューやダッシュボードウィジェットを作成
  • 非ログインユーザーを管理画面にリダイレクトしないようにする
  • JavaScript に適切な管理 URL を渡す

シンプルなコード例

echo admin_url();

出力例(WordPress が https://example.com/ にインストールされている場合):

https://example.com/wp-admin/

このように、サイトの wp-admin/ ディレクトリの URL を動的に取得できます。

使い方の説明

管理画面の特定のページ(例: 投稿一覧)へのリンクを取得するには、admin_url() の引数にパスを指定します。

echo admin_url('edit.php');

出力例

https://example.com/wp-admin/edit.php

これは、投稿一覧(wp-admin/edit.php)の URL を生成します。

管理画面内の特定の設定ページの URL を取得

例えば、「一般設定(Settings > General)」ページの URL を取得するには以下のようにします。

echo admin_url('options-general.php');

出力例

https://example.com/wp-admin/options-general.php

特定のユーザーを管理画面のページへリダイレクト

ユーザーがログインしている場合、管理画面のダッシュボードへリダイレクトする例:

if (is_user_logged_in()) {
    wp_redirect(admin_url());
    exit;
}

一緒に使うことが多い関連タグ

get_admin_url()

特定のサイト(マルチサイト環境)における管理画面の URL を取得する。

echo get_admin_url(1, 'edit.php');

出力例(サイト ID が 1 の場合)

https://example.com/wp-admin/edit.php

network_admin_url()

マルチサイトのネットワーク管理画面の URL を取得する。

echo network_admin_url();

出力例

https://example.com/wp-admin/network/

site_url()

WordPress サイトのルート URL を取得する。

echo site_url();

出力例

https://example.com/

admin_url()site_url() の違い

関数役割
admin_url()管理画面の URL を取得https://example.com/wp-admin/
site_url()サイトのルート URL を取得https://example.com/

追加情報で取得したい場合

ログインページの URL を取得

ログインページの URL を取得するには、wp_login_url() を使用します。

echo wp_login_url();

出力例

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

ログアウトページの URL を取得

ログアウト URL を取得するには、wp_logout_url() を使用します。

echo wp_logout_url();

出力例

https://example.com/wp-login.php?action=logout

想定されるトラブル

admin_url() が正しい URL を返さない

解決方法

  • site_url()home_url() ではなく admin_url() を使用しているか確認する
  • wp-admin の場所が変更されていないか確認する(セキュリティプラグインの影響)
  • define('WP_ADMIN_DIR', '/custom-admin/') のような設定がある場合、適切に適用されているか確認

管理画面の URL に wp-admin/ が二重に入る

解決方法

admin_url() の引数に / を付けていないか確認する

// NG echo admin_url('/edit.php'); // https://example.com/wp-admin//edit.php 
// OK echo admin_url('edit.php'); // https://example.com/wp-admin/edit.php

QA

admin_url()get_admin_url() の違いは?

admin_url() は現在のサイトの管理画面 URL を返しますが、get_admin_url() は特定のサイト(マルチサイト環境)の管理画面 URL を取得できます。

admin_url() を JavaScript で使うには?

wp_localize_script() を使用して JavaScript に渡すことができます。

function my_admin_script() {
    wp_enqueue_script('my-script', get_template_directory_uri() . '/js/script.js', array(), null, true);
    wp_localize_script('my-script', 'adminData', array('adminUrl' => admin_url()));
}
add_action('admin_enqueue_scripts', 'my_admin_script');

JavaScript 内で adminData.adminUrl を利用できます。

admin_url() を使ってカスタム管理ページを作成できますか?

はい、例えばカスタム設定ページへのリンクを作成する際に使用できます。

echo '<a href="' . esc_url(admin_url('admin.php?page=my_plugin_settings')) . '">設定ページへ</a>';

まとめ

admin_url() は、WordPress の管理画面の URL を取得する便利な関数であり、動的に適切な URL を生成するのに役立ちます。

特に、環境によらず wp-admin/ の正しいパスを取得できるため、テーマやプラグイン開発時には必須の関数です。get_admin_url()network_admin_url() などと組み合わせることで、より柔軟な URL 管理が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次