在WordPress中不同URL地址函数详解一文中我写到了home_url和site_url,在之前的文章中似乎也讨论过这个问题,但始终没有辨析清楚,今天用一个小短文将这个话题说清楚。
在独立站点中home_url和site_url相同,他们被存放在_options数据表中,一般当我们更换域名之后,需要进入数据库修改site_url对应的option_value才能正常进入,进入后台之后再修改home_url的值,顾名思议,site_url就是指WordPress系统安装路径,通过这个路径访问的是wordpress系统的index.php文件,当然,一般情况下就是访问首页了。
home_url真正等价的值是get_bloginfo('url'),主要用在前台中打印地址。例如我们在主题中要获得utubon.com/site/这个路径,那么使用echo home('/site/');即可,只有当我们要调用某个放在插件目录下的文件的时候,我们才使用site_url(),但实际上plugin_url()就可以帮上忙,不需要site_url插手。
在特殊情况下home_url和site_url不同。
- 使用了多语言插件,规定不同的域名对应不同的路径;
- 使用域名绑定插件;
- 开启Multisite多站点功能;
- 其他add_filter('home_url','')的情况下。
当我们使用一些多语言插件的时候,home_url对应的值会动态变化,例如我们让www指向中文站点,让en.子域名指向英文站点,fr.指向法语站点,那么在你的主题中,虽然都使用了home_url来获得首页地址,但在英文站点中这个首页地址是以en.开头的子域名地址,法语站点中也是同样的道理,这个时候你可以使用site_url来获得中文站点的地址。
在开启了多站点的时候,情况又有所变化,home_url是当前子站点的首页地址,而site_url是整个站点的访问地址。在下一篇文章中,我会提到在多站点中blog和site的区别。