在 WordPress 多站点环境中,可以通过以下方法获取当前站点的 siteurl、home、blogname 和 blogdescription 等信息:
方法一:直接使用 get_option()
WordPress 的 get_option() 函数可以直接获取当前站点的配置选项:
// 获取站点地址(WordPress 安装地址)
$site_url = get_option('siteurl');
// 获取首页地址(站点前台访问地址)
$home_url = get_option('home');
// 获取站点名称(标题)
$blog_name = get_option('blogname');
// 获取站点描述(副标题)
$blog_description = get_option('blogdescription');
方法二:使用 get_bloginfo() 函数
get_bloginfo() 可以更简洁地获取站点信息,但需注意参数名称:
// 获取站点地址(安装地址)
$site_url = get_bloginfo('wpurl');
// 获取首页地址(前台地址)
$home_url = get_bloginfo('url');
// 获取站点名称(标题)
$blog_name = get_bloginfo('name');
// 获取站点描述(副标题)
$blog_description = get_bloginfo('description');
方法三:使用 WordPress 的 URL 函数(更灵活)
对于 URL 地址,建议使用以下专用函数,它们会自动处理路径和协议(如 HTTPS):
// 获取站点安装地址(等价于 `siteurl`)
$site_url = site_url();
// 获取首页地址(等价于 `home`)
$home_url = home_url();
// 获取站点名称和描述(依然用 get_bloginfo)
$blog_name = get_bloginfo('name');
$blog_description = get_bloginfo('description');
代码示例
在主题模板中输出信息(例如 footer.php):
<?php
// 获取所有信息
$current_site_id = get_current_blog_id();
$site_url = site_url();
$home_url = home_url();
$blog_name = get_bloginfo('name');
$blog_description = get_bloginfo('description');
?>
<div class="site-info">
<p>站点ID: <?php echo $current_site_id; ?></p>
<p>安装地址: <?php echo $site_url; ?></p>
<p>首页地址: <a href="<?php echo $home_url; ?>"><?php echo $home_url; ?></a></p>
<p>站点名称: <?php echo $blog_name; ?></p>
<p>站点描述: <?php echo $blog_description; ?></p>
</div>
注意事项
- 多站点兼容性:
- 上述方法均基于当前站点的上下文(即
get_current_blog_id()对应的站点),无需手动切换数据库或站点。 - 如果需要在其他站点中获取信息(例如在管理后台),需先用
switch_to_blog($site_id)切换上下文。
site_urlvshome_url:
site_url():返回 WordPress 核心文件的安装地址(如https://example.com/wp)。home_url():返回用户访问的前台首页地址(如https://example.com)。
- 缓存优化:
- 频繁调用
get_option()可能影响性能,建议将结果赋值给变量后复用。
替代方案(直接访问数据库)
虽然不推荐,但可以通过全局 $wpdb 直接查询数据库:
global $wpdb;
$current_site_id = get_current_blog_id();
$options = $wpdb->get_results("
SELECT option_name, option_value
FROM {$wpdb->prefix}options
WHERE option_name IN ('siteurl', 'home', 'blogname', 'blogdescription')
");
// 将结果转为键值对数组
$options = array_combine(
array_column($options, 'option_name'),
array_column($options, 'option_value')
);
$site_url = $options['siteurl'];
$home_url = $options['home'];
$blog_name = $options['blogname'];
$blog_description = $options['blogdescription'];
总结
- 推荐方法:直接使用
site_url()、home_url()和get_bloginfo(),简洁高效。 - 适用场景:主题开发、插件逻辑、多站点定制化功能。
- 安全提示:输出 URL 或文本时,建议使用
esc_url()和esc_html()转义:
<a href="<?php echo esc_url(home_url()); ?>">
<?php echo esc_html(get_bloginfo('name')); ?>
</a>
bloginfo()函数
关于 bloginfo() 函数在主题文件中的使用
在 WordPress 主题文件中,当需要直接打印站点信息时,使用 bloginfo() 函数确实可以是一种简洁高效的方式。不过,需要注意以下几点:
直接输出 vs. 赋值给变量:
bloginfo() 函数默认行为是直接输出信息到页面上。如果你需要在输出之前对信息进行进一步处理(如条件判断、字符串拼接等),那么先使用 get_bloginfo() 函数将信息赋值给变量会更为灵活。
例如,在需要将站点名称和描述嵌入到 HTML 标签中时,先赋值给变量再输出会更方便进行转义和格式化。
参数使用:
bloginfo() 函数接受一个参数,该参数指定了要获取的站点信息类型(如 ‘name’、’description’ 等)。确保传递正确的参数以获取所需的信息。
性能考虑:
虽然 bloginfo() 函数在大多数情况下性能表现良好,但如果在一个页面上频繁调用该函数以获取不同的站点信息,可能会对性能产生一定影响。在这种情况下,考虑将信息赋值给变量并复用,以减少不必要的函数调用。
安全性:
当使用 bloginfo() 或 get_bloginfo() 输出信息到页面上时,确保对输出进行适当的转义以防止 XSS 攻击。虽然 WordPress 内置函数通常会进行必要的转义处理,但在自定义输出时仍需保持警惕。
代码可读性:
在团队开发环境中,使用 get_bloginfo() 将信息赋值给变量后再输出可以提高代码的可读性和可维护性。这样做使得其他开发者更容易理解信息的来源和用途。

