在成功进口了约4000位用户及其博客和帖子之后,我有一个权利问题:所有用户仅是他们自己的博客中的订阅者。如何将其更改为博客(不是在网站!)管理员特权上?我在Codex中发现的所有已知功能都赋予主博客的管理权,这不是我想要的。

谢谢你

编辑:这里怎么了?

include 'wp-load.php';
global $wpdb;
for ( $blog_id = 393; $blog_id <=4091; $blog_id++ ){

  $bloguser= get_users_of_blog ($blog_id);
    foreach ($bloguser as $usr) { // maybe there is more than one
        $user_id = $usr->ID;
          echo 'Blog No. '.$blog_id.' is property of user: '.$user_id;  //control check
      if ($user_id != '') {
        $user = new WP_User($user_id);
        $user->for_blog($blog_id);
        $user->remove_role('editor');
        $user->add_role('administrator');
      }
    }
}
echo 'Done!';

代码运行良好,但是用户的角色没有变化。

编辑:编辑编辑,没有更改结果

@eamann您确定吗,add_role是正确的功能吗?我了解这是为了在WP系统中添加新角色。

编辑:再次更新代码。使用update_user_meta。 $ CHECK将“管理员”退回(正确!),但是如果我调用用户的博客属性,则用户始终为“编辑器”。

有帮助吗?

解决方案

从您的问题中,我假设这些是多站点安装中特定博客上的用户,对吗?在这种情况下,请执行以下操作:

  1. 转到您要为这些用户管理员的博客。
  2. 单击左侧管理侧栏中的“用户”按钮
    • 这将向您展示一次大约20个用户的显示(显示显示)
  3. 单击您要宣传的用户旁边的复选框
  4. 在列表的顶部是一个下拉框,该框在此选择框中显示“更改角色” - 选择“管理员”
  5. 单击选择框右侧的“更改”按钮

您必须为用户的每个页面执行此操作,并且有4000个用户将有大约160页的结果。但这是可行的。


更新

如果您想要一些特定的代码,建议您查看 WP_User 班级。此类定义了您需要迭代使用的两种方法: for_blog()add_role().

基本上,您需要根据用户的ID或用户名来循环。考虑一下 未经测试 示例代码:

$ids = [1,2,3,4];
foreach($ids as $id) {
    $user = new WP_User($id);
    $user->for_blog( ... user's blog id ... );
    $user->remove_role('subscriber');
    $user->add_role('administrator');
}

默认情况下, add_role() 方法的方法 WP_User 课程将在当前博客上行动...您使用 for_blog() 在运行之前切换到特定的博客 add_role() 方法。

因此,如果您拥有用户的ID和应该是管理员的博客的ID,则可以轻松地循环浏览它们,并将其设置为其特定网站的管理员。

许可以下: CC-BY-SA归因
scroll top