get_site_url

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

WordPress Version: 5.7

/**
 * Retrieves the URL for a given site where WordPress application files
 * (e.g. wp-blog-header.php or the wp-admin/ folder) are accessible.
 *
 * Returns the 'site_url' option with the appropriate protocol, 'https' if
 * is_ssl() and 'http' otherwise. If `$scheme` is 'http' or 'https',
 * `is_ssl()` is overridden.
 *
 * @since 3.0.0
 *
 * @param int|null    $blog_id Optional. Site ID. Default null (current site).
 * @param string      $path    Optional. Path relative to the site URL. Default empty.
 * @param string|null $scheme  Optional. Scheme to give the site URL context. Accepts
 *                             'http', 'https', 'login', 'login_post', 'admin', or
 *                             'relative'. Default null.
 * @return string Site URL link with optional path appended.
 */
function get_site_url($blog_id = null, $path = '', $scheme = null)
{
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('siteurl');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('siteurl');
        restore_current_blog();
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filters the site URL.
     *
     * @since 2.7.0
     *
     * @param string      $url     The complete site URL including scheme and path.
     * @param string      $path    Path relative to the site URL. Blank string if no path is specified.
     * @param string|null $scheme  Scheme to give the site URL context. Accepts 'http', 'https', 'login',
     *                             'login_post', 'admin', 'relative' or null.
     * @param int|null    $blog_id Site ID, or null for the current site.
     */
    return apply_filters('site_url', $url, $path, $scheme, $blog_id);
}

WordPress Version: 4.6

/**
 * Retrieves the URL for a given site where WordPress application files
 * (e.g. wp-blog-header.php or the wp-admin/ folder) are accessible.
 *
 * Returns the 'site_url' option with the appropriate protocol, 'https' if
 * is_ssl() and 'http' otherwise. If `$scheme` is 'http' or 'https',
 * `is_ssl()` is overridden.
 *
 * @since 3.0.0
 *
 * @param int    $blog_id Optional. Site ID. Default null (current site).
 * @param string $path    Optional. Path relative to the site URL. Default empty.
 * @param string $scheme  Optional. Scheme to give the site URL context. Accepts
 *                        'http', 'https', 'login', 'login_post', 'admin', or
 *                        'relative'. Default null.
 * @return string Site URL link with optional path appended.
 */
function get_site_url($blog_id = null, $path = '', $scheme = null)
{
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('siteurl');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('siteurl');
        restore_current_blog();
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filters the site URL.
     *
     * @since 2.7.0
     *
     * @param string      $url     The complete site URL including scheme and path.
     * @param string      $path    Path relative to the site URL. Blank string if no path is specified.
     * @param string|null $scheme  Scheme to give the site URL context. Accepts 'http', 'https', 'login',
     *                             'login_post', 'admin', 'relative' or null.
     * @param int|null    $blog_id Site ID, or null for the current site.
     */
    return apply_filters('site_url', $url, $path, $scheme, $blog_id);
}

WordPress Version: 4.5

/**
 * Retrieve the URL for a given site where WordPress application files
 * (e.g. wp-blog-header.php or the wp-admin/ folder) are accessible.
 *
 * Returns the 'site_url' option with the appropriate protocol, 'https' if
 * {@see is_ssl()} and 'http' otherwise. If `$scheme` is 'http' or 'https',
 * `is_ssl()` is overridden.
 *
 * @since 3.0.0
 *
 * @param int    $blog_id Optional. Site ID. Default null (current site).
 * @param string $path    Optional. Path relative to the site url. Default empty.
 * @param string $scheme  Optional. Scheme to give the site url context. Accepts
 *                        'http', 'https', 'login', 'login_post', 'admin', or
 *                        'relative'. Default null.
 * @return string Site url link with optional path appended.
 */
function get_site_url($blog_id = null, $path = '', $scheme = null)
{
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('siteurl');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('siteurl');
        restore_current_blog();
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the site URL.
     *
     * @since 2.7.0
     *
     * @param string      $url     The complete site URL including scheme and path.
     * @param string      $path    Path relative to the site URL. Blank string if no path is specified.
     * @param string|null $scheme  Scheme to give the site URL context. Accepts 'http', 'https', 'login',
     *                             'login_post', 'admin', 'relative' or null.
     * @param int|null    $blog_id Site ID, or null for the current site.
     */
    return apply_filters('site_url', $url, $path, $scheme, $blog_id);
}

WordPress Version: 4.1

/**
 * Retrieve the site url for a given site.
 *
 * Returns the 'site_url' option with the appropriate protocol, 'https' if
 * {@see is_ssl()} and 'http' otherwise. If `$scheme` is 'http' or 'https',
 * `is_ssl()` is overridden.
 *
 * @since 3.0.0
 *
 * @param int    $blog_id Optional. Blog ID. Default null (current site).
 * @param string $path    Optional. Path relative to the site url. Default empty.
 * @param string $scheme  Optional. Scheme to give the site url context. Accepts
 *                        'http', 'https', 'login', 'login_post', 'admin', or
 *                        'relative'. Default null.
 * @return string Site url link with optional path appended.
*/
function get_site_url($blog_id = null, $path = '', $scheme = null)
{
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('siteurl');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('siteurl');
        restore_current_blog();
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the site URL.
     *
     * @since 2.7.0
     *
     * @param string      $url     The complete site URL including scheme and path.
     * @param string      $path    Path relative to the site URL. Blank string if no path is specified.
     * @param string|null $scheme  Scheme to give the site URL context. Accepts 'http', 'https', 'login',
     *                             'login_post', 'admin', 'relative' or null.
     * @param int|null    $blog_id Blog ID, or null for the current blog.
     */
    return apply_filters('site_url', $url, $path, $scheme, $blog_id);
}

WordPress Version: 3.9

/**
 * Retrieve the site url for a given site.
 *
 * Returns the 'site_url' option with the appropriate protocol, 'https' if
 * is_ssl() and 'http' otherwise. If $scheme is 'http' or 'https', is_ssl() is
 * overridden.
 *
 * @since 3.0.0
 *
 * @param int $blog_id (optional) Blog ID. Defaults to current blog.
 * @param string $path Optional. Path relative to the site url.
 * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
 * @return string Site url link with optional path appended.
*/
function get_site_url($blog_id = null, $path = '', $scheme = null)
{
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('siteurl');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('siteurl');
        restore_current_blog();
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the site URL.
     *
     * @since 2.7.0
     *
     * @param string      $url     The complete site URL including scheme and path.
     * @param string      $path    Path relative to the site URL. Blank string if no path is specified.
     * @param string|null $scheme  Scheme to give the site URL context. Accepts 'http', 'https', 'login',
     *                             'login_post', 'admin', 'relative' or null.
     * @param int|null    $blog_id Blog ID, or null for the current blog.
     */
    return apply_filters('site_url', $url, $path, $scheme, $blog_id);
}

WordPress Version: 3.7

/**
 * Retrieve the site url for a given site.
 *
 * Returns the 'site_url' option with the appropriate protocol, 'https' if
 * is_ssl() and 'http' otherwise. If $scheme is 'http' or 'https', is_ssl() is
 * overridden.
 *
 * @package WordPress
 * @since 3.0.0
 *
 * @param int $blog_id (optional) Blog ID. Defaults to current blog.
 * @param string $path Optional. Path relative to the site url.
 * @param string $scheme Optional. Scheme to give the site url context. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
 * @return string Site url link with optional path appended.
*/
function get_site_url($blog_id = null, $path = '', $scheme = null)
{
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('siteurl');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('siteurl');
        restore_current_blog();
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    return apply_filters('site_url', $url, $path, $scheme, $blog_id);
}