是否有一个is_user_logged_in()用于多站点?


11

是否有WordPress的MU /多站点(3.0+),在那里我可以像网络站点ID添加is_user_logged_in()函数is_user_logged_in(2),其中2将是SITE_ID?

更新:

经过一番挖掘之后,我想到了下面的代码。不幸的是,它不起作用。

//不要使用它。不起作用。
函数mu_logged_in($ blog_id){
    switch_to_blog($ blog_id);
        $ status = is_user_logged_in();
    restore_current_blog();
    返回$状态;
}

阿努的答案和评论都很好。

另外,请确保在wp-config.php文件中正确设置了Cookie域:)


您可以解释用例吗?
Chip Bennett

Answers:


10

是的,没有!

用户在多站点方案中的工作方式是只有一个用户池,然后这些用户与博客相关联。

因此,登录状态在所有博客中都是通用的,但是您可以is_blog_user($blog_id)用来确定当前登录用户是否是该博客的成员。一个例子:

if (is_user_logged_in()) {
  if (is_blog_user(4)) echo "Current user is a member of blog 4";
}

的法典页面 is_blog_user()


我的想法有些不同。我已经添加到问题中,但是我认为您的问题也非常有用。
cwd

无论该用户是哪个博客的成员,您的答案都可能对所有登录用户返回true。
阿努

你是对的。它仍然仅适用于当前博客。但是你看到我想要达到的目标吗?我有一个博客,该用户将不会登录,但是如果他们登录到网络中的其他博客,我想显示信息。有任何想法吗?
cwd

您错过了重点。用户的登录状态为“全局”,即该用户登录后,便以“订阅者”作为默认角色登录到所有博客。
anu

4
小提示。该功能is_blog_user()已被弃用,新功能得到这个数据is_user_member_of_blog( $user_id, $blog_id )
bueltge
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.