在多站点设置中获取一个站点的用户表

时间:2014-08-29 作者:Alex Howell

我试图只选择在我的多站点设置中为特定站点注册的用户,并查看该用户表已收集网络上的所有用户。是否只有特定站点上的用户才能访问?还是只从特定站点选择用户?

1 个回复
最合适的回答,由SO网友:Pat J 整理而成

是的,所有WordPress多站点用户进入{$wpdb->prefix}users 桌子这样,他们就形成了一个用户池,每个用户都可以访问网络中的一个或多个站点。

您可以通过使用获取给定站点的用户get_users(), 可以将给定站点的ID作为参数:

// get users for site example.com/my-site
$args = array(
    \'blog_id\' = get_id_from_blogname( \'my-site\' ),
);
$users_for_site = get_users( $args );
如果您使用Multisiteblog_id 参数未设置,您将获得当前站点的用户。

默认情况下,比较电子邮件地址,get_users() 返回的数组WP_User objects, 因此,您应该能够比较电子邮件地址列表(假定包含在数组中$my_user_emails 在下面的代码中)返回到get_users():

// uses $users_for_site from the previous code block

$no_email_entered = array();
foreach( $users_for_site as $user ) {
    if( ! in_array( $user->user_email, $my_user_emails ) ) {
        $no_email_entered[] = $user->user_email;
    }
}
// $no_email_entered should now contain all the email addresses 
// in the list of site users that are *not* in your table
参考文献get_users()
  • get_id_from_blogname()
  • WP_User class
  • 结束

    相关推荐

    Register users by e-mail

    我想使用电子邮件地址而不是用户名来注册和登录我的成员。我已经让登录部分使用中的一些代码工作this answer. 工作正常,但正如预期的那样,wordpress仍然希望在注册页面上有一个用户名(自定义,而不是默认)。这行代码注册用户:$user_signup = wp_insert_user( $user_data );, 注册时出现以下错误:无法创建登录名为空的用户。我猜这可以通过删除适当的过滤器来解决,但我对wordpress还不熟悉。删除用户名要求的代码是什么?