Using WordPress ‘admin_url’ PHP filter

The admin_url WordPress PHP filter allows you to modify the admin area URL.

Usage

add_filter('admin_url', 'your_custom_function', 10, 4);
function your_custom_function($url, $path, $blog_id, $scheme) {
  // your custom code here
  return $url;
}

Parameters

  • $url (string) – The complete admin area URL including scheme and path.
  • $path (string) – Path relative to the admin area URL. Blank string if no path is specified.
  • $blog_id (int|null) – Site ID, or null for the current site.
  • $scheme (string|null) – The scheme to use. Accepts ‘http’, ‘https’, ‘admin’, or null. Default ‘admin’, which obeys force_ssl_admin() and is_ssl().

More information

See WordPress Developer Resources: admin_url

Examples

Change admin URL to a custom subdomain

Modify the admin URL to use a custom subdomain (e.g., admin.example.com) instead of the default example.com/wp-admin.

add_filter('admin_url', 'custom_subdomain_admin_url', 10, 4);
function custom_subdomain_admin_url($url, $path, $blog_id, $scheme) {
  $url = str_replace('example.com/wp-admin', 'admin.example.com', $url);
  return $url;
}

Force HTTPS on admin URL

Ensure that the admin URL always uses the HTTPS scheme.

add_filter('admin_url', 'force_https_admin_url', 10, 4);
function force_https_admin_url($url, $path, $blog_id, $scheme) {
  $url = set_url_scheme($url, 'https');
  return $url;
}

Add a custom parameter to admin URL

Add a custom query parameter (e.g., utm_source) to the admin URL for tracking purposes.

add_filter('admin_url', 'add_custom_parameter_admin_url', 10, 4);
function add_custom_parameter_admin_url($url, $path, $blog_id, $scheme) {
  $url = add_query_arg('utm_source', 'your_source', $url);
  return $url;
}

Redirect to a specific admin page

Redirect all admin area requests to a specific admin page (e.g., Dashboard).

add_filter('admin_url', 'redirect_to_dashboard', 10, 4);
function redirect_to_dashboard($url, $path, $blog_id, $scheme) {
  $url = admin_url('index.php', $scheme);
  return $url;
}

Change admin URL for a specific site in a multisite installation

Modify the admin URL only for a specific site in a multisite installation.

add_filter('admin_url', 'change_admin_url_for_specific_site', 10, 4);
function change_admin_url_for_specific_site($url, $path, $blog_id, $scheme) {
  if ($blog_id == 2) { // Change the admin URL only for the site with ID 2
    $url = str_replace('example.com/site2/wp-admin', 'site2.example.com', $url);
  }
  return $url;
}