问题描述
我想了解 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。