GET_SITE_OPTION和GET_BLOG_OPTION有什么不同?

时间:2015-03-14 作者:henrywright

我想了解get_site_option()get_blog_option().

博客和网站是两件不同的事情吗?如果这个问题看起来很简单,我深表歉意,但当我提到WordPress网站时,我总是非常随意地使用这两个术语(意思是相同的)。我现在想知道是否有区别?

3 个回复
最合适的回答,由SO网友:gmazzap 整理而成

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

在单站点安装中,当前博客是唯一的博客。因此,获取get_option() 返回它的选项。

<小时>get_site_option() 用于检索网络范围内的选项。这意味着您可以从网络的任何站点获得相同的选项。

在单个安装中使用此函数时,通常返回相同的内容get_option(). 该值可能会更改,因为get_site_option() 触发未由触发的筛选器挂钩get_option().

请注意,一旦$wpdb->options 表是特定于日志的,网络范围的选项存储在$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() 未在单站点安装中定义。

SO网友:kingkool68

get_site_option() - 获取网络范围的选项。此选项通常添加在多站点设置的网络管理设置部分。如果我有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

tl;dr: get_site_option() 获取网络范围的值,get_blog_option() 获取给定站点的特定值,而无需自己先切换到该站点。

SO网友:Dale Clifford

虽然get_option() 可能在网络站点上检索博客选项,有时网络筛选器会覆盖站点选项。

例如:users_can_register 因为站点将始终被网络设置覆盖。

要检索站点选项,有时需要删除位于ms默认筛选器中的任何网络筛选器。WP核心中的php文件。

remove_filter( \'option_users_can_register\', \'users_can_register_signup_filter\' ); // ignore network override
$registration = get_option( \'users_can_register\');

结束

相关推荐

如何将Wordpress MultiSite与混合的HTTP和HTTPS站点一起使用?

我有一个多wordpress安装(3.x),有5个站点,其中只有一个使用SSL。所有这些都在自己的域上运行http://ssldomain.com 转发至https://ssldomain.com.不过,这似乎打破了wordpress的升级。现在我得到一条消息:升级网络https://nonsecureddomain.com警告更新时出现问题https://nonsecureddomain.com. 您的服务器可能无法连接到其上运行的站点。错误消息:SSL:没有其他证书使用者名称与目标主机名“非安全域”匹