get_site_option和get_blog_option有什么区别?


9

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

博客网站两种不同的东西?道歉,如果这个问题看起来很基本,但是当提到WordPress网站时,我总是非常宽松地使用这两个术语(表示同一意思)。我现在想知道是否有区别?

Answers:


15

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()在单站点安装中未定义。


6

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()获取给定站点的特定值,而无需先自行切换到该站点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.