Difference between home_url & site_url
Here are some notes to help discern the subtle (and oft-confusing) differences between the WordPress functions, home_url and site_url (and their related “get” functions, get_home_url and get_site_url). We’ll look at the output of these functions and how they relate to the WordPress General Settings.
tl;dr
Summary of this article:
home_url() = https://example.com
get_home_url() = https://example.com
site_url() = https://example.com/wordpress
get_site_url() = https://example.com/wordpress
In a nutshell, appending /wp-admin/ to site_url() always gives the location of the WP Admin Area. This may or may not be the case for home_url(), which frequently corresponds to the site’s root directory (but not always).
DIY
For quick, specific results, add the following code to your WordPress theme or plugin:
echo '<ul>';
echo '<li>home_url() = '. home_url() . '</li>';
echo '<li>get_home_url() = '. get_home_url() . '</li>';
echo '<li>site_url() = '. site_url() . '</li>';
echo '<li>get_site_url() = '. get_site_url() . '</li>';
echo '</ul>';
And/or read on to dig deeper into these similar WordPress functions..
General Settings
Here are the two General Settings associated with home_url() and site_url() (and their related “get” functions):
- Site Address (URL) =
home_url()=https://example.com - WordPress Address (URL) =
site_url()=https://example.com/wordpress
Thus, the frequent confusion between home_url() and site_url() happens because the WP General Settings uses terminology that does not match up with the associated template tags. I.e., site_url() corresponds to “WordPress Address”, while home_url() corresponds to “Site Address”. This seems backwards, at best.
home_url()
home_url() returns the “Site Address”, as defined in the General Settings.
Syntax: <?php home_url($path, $scheme); ?>
Example: home_url() = https://example.com
References:
get_home_url()
get_home_url() returns the “Site Address”, as defined in the General Settings. Note that this function accepts an optional $blog_id parameter, which makes it useful for Multisite setups.
Syntax: <?php get_home_url($blog_id, $path, $scheme); ?>
Example: get_home_url() = https://example.com
References:
site_url()
site_url() returns the “WordPress Address”, as defined in the General Settings.
Syntax: <?php site_url($path, $scheme); ?>
Example: site_url() = https://example.com/wordpress
References:
get_site_url()
get_site_url() returns the “WordPress Address”, as defined in the General Settings. Note that this function accepts an optional $blog_id parameter, which makes it useful for Multisite setups.
Syntax: <?php get_site_url($blog_id, $path, $scheme); ?>
Example: get_site_url() = https://example.com/wordpress
References:


