我想了解get_site_option() 和get_blog_option().
博客和网站是两件不同的事情吗?如果这个问题看起来很简单,我深表歉意,但当我提到WordPress网站时,我总是非常随意地使用这两个术语(意思是相同的)。我现在想知道是否有区别?
我想了解get_site_option() 和get_blog_option().
博客和网站是两件不同的事情吗?如果这个问题看起来很简单,我深表歉意,但当我提到WordPress网站时,我总是非常随意地使用这两个术语(意思是相同的)。我现在想知道是否有区别?
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()
未在单站点安装中定义。
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()
获取给定站点的特定值,而无需自己先切换到该站点。
虽然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安装(3.x),有5个站点,其中只有一个使用SSL。所有这些都在自己的域上运行http://ssldomain.com 转发至https://ssldomain.com.不过,这似乎打破了wordpress的升级。现在我得到一条消息:升级网络https://nonsecureddomain.com警告更新时出现问题https://nonsecureddomain.com. 您的服务器可能无法连接到其上运行的站点。错误消息:SSL:没有其他证书使用者名称与目标主机名“非安全域”匹