get_blog_id_from_url

The timeline below displays how wordpress function get_blog_id_from_url has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.2

/**
 * Gets a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU (3.0.0)
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $domain Website domain.
 * @param string $path   Optional. Not required for subdomain installations. Default '/'.
 * @return int 0 if no blog found, otherwise the ID of the matching blog.
 */
function get_blog_id_from_url($domain, $path = '/')
{
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if (-1 == $id) {
        // Blog does not exist.
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $args = array('domain' => $domain, 'path' => $path, 'fields' => 'ids', 'number' => 1, 'update_site_meta_cache' => false);
    $result = get_sites($args);
    $id = array_shift($result);
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: 6.1

/**
 * Gets a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU (3.0.0)
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $domain
 * @param string $path   Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if (-1 == $id) {
        // Blog does not exist.
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $args = array('domain' => $domain, 'path' => $path, 'fields' => 'ids', 'number' => 1, 'update_site_meta_cache' => false);
    $result = get_sites($args);
    $id = array_shift($result);
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: 5.4

/**
 * Get a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU (3.0.0)
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $domain
 * @param string $path   Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if (-1 == $id) {
        // Blog does not exist.
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $args = array('domain' => $domain, 'path' => $path, 'fields' => 'ids', 'number' => 1, 'update_site_meta_cache' => false);
    $result = get_sites($args);
    $id = array_shift($result);
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: .10

/**
 * Get a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU (3.0.0)
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $domain
 * @param string $path   Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if ($id == -1) {
        // blog does not exist
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $args = array('domain' => $domain, 'path' => $path, 'fields' => 'ids', 'number' => 1, 'update_site_meta_cache' => false);
    $result = get_sites($args);
    $id = array_shift($result);
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: 4.9

/**
 * Get a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU (3.0.0)
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $domain
 * @param string $path   Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if ($id == -1) {
        // blog does not exist
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $args = array('domain' => $domain, 'path' => $path, 'fields' => 'ids', 'number' => 1);
    $result = get_sites($args);
    $id = array_shift($result);
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: 4.6

/**
 * Get a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU 2.6.5
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $domain
 * @param string $path   Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if ($id == -1) {
        // blog does not exist
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $args = array('domain' => $domain, 'path' => $path, 'fields' => 'ids');
    $result = get_sites($args);
    $id = array_shift($result);
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: 4.4

/**
 * Get a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU 2.6.5
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $domain
 * @param string $path   Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    global $wpdb;
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if ($id == -1) {
        // blog does not exist
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $id = $wpdb->get_var($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE domain = %s and path = %s /* get_blog_id_from_url */", $domain, $path));
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: 4.3

/**
 * Get a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU 2.6.5
 *
 * @global wpdb $wpdb
 *
 * @param string $domain
 * @param string $path   Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    global $wpdb;
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if ($id == -1) {
        // blog does not exist
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $id = $wpdb->get_var($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE domain = %s and path = %s /* get_blog_id_from_url */", $domain, $path));
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}

WordPress Version: 3.7

/**
 * Get a blog's numeric ID from its URL.
 *
 * On a subdirectory installation like example.com/blog1/,
 * $domain will be the root 'example.com' and $path the
 * subdirectory '/blog1/'. With subdomains like blog1.example.com,
 * $domain is 'blog1.example.com' and $path is '/'.
 *
 * @since MU 2.6.5
 *
 * @param string $domain
 * @param string $path Optional. Not required for subdomain installations.
 * @return int 0 if no blog found, otherwise the ID of the matching blog
 */
function get_blog_id_from_url($domain, $path = '/')
{
    global $wpdb;
    $domain = strtolower($domain);
    $path = strtolower($path);
    $id = wp_cache_get(md5($domain . $path), 'blog-id-cache');
    if ($id == -1) {
        // blog does not exist
        return 0;
    } elseif ($id) {
        return (int) $id;
    }
    $id = $wpdb->get_var($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE domain = %s and path = %s /* get_blog_id_from_url */", $domain, $path));
    if (!$id) {
        wp_cache_set(md5($domain . $path), -1, 'blog-id-cache');
        return 0;
    }
    wp_cache_set(md5($domain . $path), $id, 'blog-id-cache');
    return $id;
}