You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress多站点:调用get_site_option无法获取wp_sitemeta中template_color值

问题分析与解决方案

你遇到的问题核心是混淆了WordPress多站点中两种不同存储机制对应的读取函数:

  • 你用的 get_site_option() 函数,是从当前站点的专属选项表(比如 wp_3_options,对应site_id=3的站点)里读取配置,而不是全局的 wp_sitemeta 表。
  • 前任开发者把 template_color 存在了 wp_sitemeta 表——这张表是用来存储多站点网络中每个站点的元数据的,对应的正确读取函数是 get_site_meta()(WordPress 4.7及以上版本推荐),旧版本可以用 get_sitemeta()。

而且你其实不需要调用 switch_to_blog(),因为读取 wp_sitemeta 表不需要切换到目标站点,直接通过站点ID就能访问,这样代码更高效。

修改后的代码如下:

foreach ( $sites as $site ) {
    $site_id = $site->blog_id;
    // 第三个参数设为true,确保返回单个字符串值而非数组
    $value = get_site_meta( $site_id, 'template_color', true );
    // 处理值为空的情况,输出默认提示
    echo $value ?: 'not available';
}

如果你的WordPress版本比较旧(低于4.7),可以替换成 get_sitemeta(),用法几乎一致:

$value = get_sitemeta( $site_id, 'template_color', true );

这样就能正确读取到 wp_sitemeta 表中存储的主题颜色值了。

内容的提问来源于stack exchange,提问作者Hanny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:23:08