问题描述

我想了解 get_site_option()get_blog_option()之间的区别。

博客和网站两个不同的东西?道歉,如果这个问题似乎是基本的,但是当提到一个 WordPress 的网站,我一直使用这两个术语非常宽松 (意思是同样的事情) 。我现在想知道是否有区别?

最佳解决方案

get_option()返回当前博客的选项。

在单站安装中,目前的博客是唯一的博客。所以得到 get_option()返回的选项。


get_site_option()用于检索选项 network-wide 。这意味着您可以从网络的任何站点获取相同的选项。

当在单次安装中使用此功能时,它通常返回相同的东西 get_option()。该值可能会改变,因为 get_site_option()触发过滤钩不是由 get_option()触发的。

请注意,一旦 $wpdb->options 表是 blog-specific,network-wide 选项存储在 $wpdb->sitemeta 表中,这是具体的多站点安装。


get_blog_option()是三个函数中唯一没有作为第一个参数接收选项名称的函数,但它的第一个参数是 $blog_id

实际上,它在多站点安装中用于从 ID 已知的特定博客中检索选项。

这个功能是什么?

switch_to_blog( $blog_id );
$value = get_option( $option, $default );
restore_current_blog();

return $value;

如果 $blog_id 与当前博客 ID 相同,则 WordPress 只会跳过 switch_to_blog 部分,并调用 get_option()

此功能在仅用于多站点安装的 wp-includes/ms-blogs.php 文件中定义,因此在单站安装中未定义 get_blog_option()

次佳解决方案

get_site_option() – 获得广泛的网络选项。此选项通常添加到多站点 set-up 的 「网络管理设置」 部分。如果我有 50 个网站,那么去 50 个不同的站点并设置相同的选项值将是一个痛苦。相反,我可以设置一次选项值,并将其应用于所有网站的网络。见 http://codex.wordpress.org/Function_Reference/get_site_option

get_blog_option() – 让您获取特定站点的选项值。一个例子可能是获取每个站点的用户特定选项的值。所以我可以得到用户所有的网站,循环遍历站点 ID 列表,并使用 get_blog_option()传递 blog_id 和选项名称,并返回结果。这是一个方便的功能,几乎完成以下操作:

switch_to_blog( $id );
$value = get_option( $option_name );
restore_current_blog();

参见 http://codex.wordpress.org/Function_Reference/get_blog_option

长话短说:get_site_option()获得广泛的网络价值,get_blog_option()获取给定站点的特定值,而无需首先切换到该站点。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。