Wordpress API:添加超级用户(站点管理员)

时间:2012-05-15 09:51:47

标签: php wordpress wordpress-plugin

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

$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);

工作正常,但如何添加超级用户?角色名称是什么?

我试过'role'=> “超级用户”,“超级用户”,“超级用户”,......但没有任何作用。

4 个答案:

答案 0 :(得分: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 );

答案 1 :(得分:1)

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

答案 2 :(得分:1)

没有这样的角色。

超级管理员存储为网站选项,您可以在函数get_super_admins中看到。 在is_super_admin中,检查用户的登录是否在前一个函数返回的数组中。

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

$admins = get_super_admins();
$admins[] = 'your_user_login@example.com';
update_site_option('site_admins', $admins);

答案 3 :(得分: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)As Alex said,添加到site_admins:

$admins = get_super_admins();
if (!in_array($email, $admins))
{
    $admins[] = $email;
    update_site_option('site_admins', $admins);
}