1

我可以像这样添加管理员:

$password = wp_generate_password();
$userData = array(
    'user_pass'     => $password,
    'user_login'    => $email,
    'user_nicename' => sanitize_title($name),
    'user_email'    => $email,
    'display_name'  => $name,
    'role'      => 'administrator'
);
$user_id = wp_insert_user($userData);

效果很好,但是如何添加超级用户?角色名称是什么?

我尝试了“角色”=>“超级用户”、“超级用户”、“超级用户”……但没有任何效果。

4

4 回答 4

2

其他答案基本正确,但最好尽可能使用 WordPress 的内置函数。您正在寻找的功能是grant_super_admin().

根据您的示例代码:

$password = wp_generate_password();
$userData = array(
    'user_pass'     => $password,
    'user_login'    => $email,
    'user_nicename' => sanitize_title($name),
    'user_email'    => $email,
    'display_name'  => $name,
    'role'          => 'administrator'
);
$user_id = wp_insert_user($userData);

// Make the user a super admin.
grant_super_admin( $user_id );
于 2014-02-22T17:26:56.810 回答
1

我快速浏览了 WordPress 代码,我相信您正在寻找的选项实际上是“site_admin”

于 2012-05-15T10:03:06.440 回答
1

没有这样的角色。

如您在函数中所见,超级管理员存储为站点选项get_super_adminsis_super_admin检查用户的登录是否在前一个函数返回的数组中。

通常这只是登录名为 admin 的用户。你需要做的是

$admins = get_super_admins();
$admins[] = 'your_user_login@example.com';
update_site_option('site_admins', $admins);
于 2012-05-15T10:15:28.937 回答
0

这看起来像是在工作:

1) 将用户角色设置为“site_admin”

2)为每个博客添加用户为管理员

$blogs = get_blog_list(0, 'all');
foreach ($blogs as $blog)
{
    add_user_to_blog($blog['blog_id'], $user_id, 'administrator');
}

3)正如亚历克斯所说,添加到site_admins:

$admins = get_super_admins();
if (!in_array($email, $admins))
{
    $admins[] = $email;
    update_site_option('site_admins', $admins);
}
于 2012-05-30T07:12:52.030 回答