get_home_url

The timeline below displays how wordpress function get_home_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 the front end is accessible.
 *
 * Returns the 'home' option with the appropriate protocol. The protocol will be 'https'
 * if is_ssl() evaluates to true; otherwise, it will be the same as the 'home' option.
 * 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 home URL. Default empty.
 * @param string|null $scheme  Optional. Scheme to give the home URL context. Accepts
 *                             'http', 'https', 'relative', 'rest', or null. Default null.
 * @return string Home URL link with optional path appended.
 */
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'), true)) {
        if (is_ssl()) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filters the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https',
     *                                 'relative', 'rest', or null.
     * @param int|null    $blog_id     Site ID, or null for the current site.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 5.5

/**
 * Retrieves the URL for a given site where the front end is accessible.
 *
 * Returns the 'home' option with the appropriate protocol. The protocol will be 'https'
 * if is_ssl() evaluates to true; otherwise, it will be the same as the 'home' option.
 * If `$scheme` is 'http' or 'https', is_ssl() is overridden.
 *
 * @since 3.0.0
 *
 * @global string $pagenow
 *
 * @param int         $blog_id Optional. Site ID. Default null (current site).
 * @param string      $path    Optional. Path relative to the home URL. Default empty.
 * @param string|null $scheme  Optional. Scheme to give the home URL context. Accepts
 *                             'http', 'https', 'relative', 'rest', or null. Default null.
 * @return string Home URL link with optional path appended.
 */
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    global $pagenow;
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'), true)) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $pagenow) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filters the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https',
     *                                 'relative', 'rest', or null.
     * @param int|null    $blog_id     Site ID, or null for the current site.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 4.7

/**
 * Retrieves the URL for a given site where the front end is accessible.
 *
 * Returns the 'home' option with the appropriate protocol. The protocol will be 'https'
 * if is_ssl() evaluates to true; otherwise, it will be the same as the 'home' option.
 * If `$scheme` is 'http' or 'https', is_ssl() is overridden.
 *
 * @since 3.0.0
 *
 * @global string $pagenow
 *
 * @param  int         $blog_id Optional. Site ID. Default null (current site).
 * @param  string      $path    Optional. Path relative to the home URL. Default empty.
 * @param  string|null $scheme  Optional. Scheme to give the home URL context. Accepts
 *                              'http', 'https', 'relative', 'rest', or null. Default null.
 * @return string Home URL link with optional path appended.
 */
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    global $pagenow;
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $pagenow) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filters the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https',
     *                                 'relative', 'rest', or null.
     * @param int|null    $blog_id     Site ID, or null for the current site.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 4.6

/**
 * Retrieves the URL for a given site where the front end is accessible.
 *
 * Returns the 'home' 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
 *
 * @global string $pagenow
 *
 * @param  int         $blog_id Optional. Site ID. Default null (current site).
 * @param  string      $path    Optional. Path relative to the home URL. Default empty.
 * @param  string|null $scheme  Optional. Scheme to give the home URL context. Accepts
 *                              'http', 'https', 'relative', 'rest', or null. Default null.
 * @return string Home URL link with optional path appended.
 */
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    global $pagenow;
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $pagenow) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filters the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https',
     *                                 'relative', 'rest', or null.
     * @param int|null    $blog_id     Site ID, or null for the current site.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 4.5

/**
 * Retrieve the URL for a given site where the front end is accessible.
 *
 * Returns the 'home' 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
 *
 * @global string $pagenow
 *
 * @param  int         $blog_id Optional. Site ID. Default null (current site).
 * @param  string      $path    Optional. Path relative to the home URL. Default empty.
 * @param  string|null $scheme  Optional. Scheme to give the home URL context. Accepts
 *                              'http', 'https', 'relative', 'rest', or null. Default null.
 * @return string Home URL link with optional path appended.
 */
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    global $pagenow;
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $pagenow) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https',
     *                                 'relative', 'rest', or null.
     * @param int|null    $blog_id     Site ID, or null for the current site.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 4.4

/**
 * Retrieve the home url for a given site.
 *
 * Returns the 'home' 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
 *
 * @global string $pagenow
 *
 * @param  int         $blog_id     Optional. Blog ID. Default null (current blog).
 * @param  string      $path        Optional. Path relative to the home URL. Default empty.
 * @param  string|null $orig_scheme Optional. Scheme to give the home URL context. Accepts
 *                                  'http', 'https', 'relative', 'rest', or null. Default null.
 * @return string Home URL link with optional path appended.
*/
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    global $pagenow;
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $pagenow) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https',
     *                                 'relative', 'rest', or null.
     * @param int|null    $blog_id     Blog ID, or null for the current blog.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 4.3

/**
 * Retrieve the home url for a given site.
 *
 * Returns the 'home' 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
 *
 * @global string $pagenow
 *
 * @param  int         $blog_id     Optional. Blog ID. Default null (current blog).
 * @param  string      $path        Optional. Path relative to the home URL. Default empty.
 * @param  string|null $orig_scheme Optional. Scheme to give the home URL context. Accepts
 *                                  'http', 'https', 'relative', or null. Default null.
 * @return string Home URL link with optional path appended.
*/
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $GLOBALS['pagenow']) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https', 'relative' or null.
     * @param int|null    $blog_id     Blog ID, or null for the current blog.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 4.1

/**
 * Retrieve the home url for a given site.
 *
 * Returns the 'home' 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 blog).
 * @param  string      $path        Optional. Path relative to the home URL. Default empty.
 * @param  string|null $orig_scheme Optional. Scheme to give the home URL context. Accepts
 *                                  'http', 'https', 'relative', or null. Default null.
 * @return string Home URL link with optional path appended.
*/
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $GLOBALS['pagenow']) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https', 'relative' or null.
     * @param int|null    $blog_id     Blog ID, or null for the current blog.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 3.9

/**
 * Retrieve the home url for a given site.
 *
 * Returns the 'home' 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 home url.
 * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https', or 'relative'.
 * @return string Home url link with optional path appended.
*/
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $GLOBALS['pagenow']) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    /**
     * Filter the home URL.
     *
     * @since 3.0.0
     *
     * @param string      $url         The complete home URL including scheme and path.
     * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https', 'relative' or null.
     * @param int|null    $blog_id     Blog ID, or null for the current blog.
     */
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}

WordPress Version: 3.7

/**
 * Retrieve the home url for a given site.
 *
 * Returns the 'home' 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 home url.
 * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http', 'https', or 'relative'.
 * @return string Home url link with optional path appended.
*/
function get_home_url($blog_id = null, $path = '', $scheme = null)
{
    $orig_scheme = $scheme;
    if (empty($blog_id) || !is_multisite()) {
        $url = get_option('home');
    } else {
        switch_to_blog($blog_id);
        $url = get_option('home');
        restore_current_blog();
    }
    if (!in_array($scheme, array('http', 'https', 'relative'))) {
        if (is_ssl() && !is_admin() && 'wp-login.php' !== $GLOBALS['pagenow']) {
            $scheme = 'https';
        } else {
            $scheme = parse_url($url, PHP_URL_SCHEME);
        }
    }
    $url = set_url_scheme($url, $scheme);
    if ($path && is_string($path)) {
        $url .= '/' . ltrim($path, '/');
    }
    return apply_filters('home_url', $url, $path, $orig_scheme, $blog_id);
}