我试图了解get_site_option()和get_blog_option()之间的区别。
是博客和网站两种不同的东西?道歉,如果这个问题看起来很基本,但是当提到WordPress网站时,我总是非常宽松地使用这两个术语(表示同一意思)。我现在想知道是否有区别?
我试图了解get_site_option()和get_blog_option()之间的区别。
是博客和网站两种不同的东西?道歉,如果这个问题看起来很基本,但是当提到WordPress网站时,我总是非常宽松地使用这两个术语(表示同一意思)。我现在想知道是否有区别?
Answers:
get_option()
返回当前博客的选项。
在单站点安装中,当前博客是唯一的博客。因此get 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与当前博客ID相同,则WordPress仅跳过该switch_to_blog
部分而仅调用get_option()
。
此功能在wp-includes/ms-blogs.php
仅为多站点安装而加载的文件中定义,因此get_blog_option()
在单站点安装中未定义。
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()
获取给定站点的特定值,而无需先自行切换到该站点。