Изменение роли пользователя после массового импорта


После успешного импорта ~4000 пользователей и их блогов и сообщений из Liftype у меня возникла проблема с правами: все пользователи являются подписчиками только в своем собственном блоге. Как я могу массово изменить его на права администратора блога (не по всему сайту!)? Все известные функции, которые я нашел в Кодексе, дают права администратора для основного блога, это не то, что я хочу.

Спасибо Уве

Редактировать: Что здесь не так?

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 возвращает "администратор" (правильно!), Но если я вызову свойства блога пользователя, пользователь всегда будет "редактором".

Author: EAMann, 2010-12-22

1 answers

Из вашего вопроса я предполагаю, что это пользователи определенного блога в рамках многоузловой установки, правильно? В этом случае выполните следующие действия:

  1. Перейдите в блог, администраторами которого вы хотите сделать этих пользователей.
  2. Нажмите кнопку "Пользователи" на боковой панели администратора слева
    • Это покажет вам отображение примерно 20 пользователей одновременно (отображение отображается на странице)
  3. Установите флажок рядом с пользователями, которых вы хотите продвигать
  4. Вверху списка находится выпадающее окно с надписью "Изменить роль на..." - Выберите "Администратор" в этом поле выбора
  5. Нажмите кнопку "Изменить" справа от поля выбора

Вам придется сделать это для каждой страницы пользователей, и с 4000 пользователями у вас будет около 160 страниц результатов. Но это выполнимо.


Обновление

Если вам нужен какой-то конкретный код, я рекомендую посмотреть на WP_User класс. Этот класс определяет два методы, которые вам нужно будет использовать итеративно: for_blog() и add_role().

В принципе, вам нужно будет перебирать пользователей на основе их идентификаторов или имен пользователей. Подумайте об этом непроверенный пример кода:

$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().

Итак, если у вас есть идентификаторы ваших пользователей и идентификаторы блогов, они должны быть администраторы для, вы можете довольно легко просмотреть их и настроить их в качестве администраторов для своих конкретных сайтов.

 1
Author: EAMann, 2010-12-23 16:27:09