Изменение роли пользователя после массового импорта
После успешного импорта ~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 возвращает "администратор" (правильно!), Но если я вызову свойства блога пользователя, пользователь всегда будет "редактором".
1 answers
Из вашего вопроса я предполагаю, что это пользователи определенного блога в рамках многоузловой установки, правильно? В этом случае выполните следующие действия:
- Перейдите в блог, администраторами которого вы хотите сделать этих пользователей.
- Нажмите кнопку "Пользователи" на боковой панели администратора слева
- Это покажет вам отображение примерно 20 пользователей одновременно (отображение отображается на странице)
- Установите флажок рядом с пользователями, которых вы хотите продвигать
- Вверху списка находится выпадающее окно с надписью "Изменить роль на..." - Выберите "Администратор" в этом поле выбора
- Нажмите кнопку "Изменить" справа от поля выбора
Вам придется сделать это для каждой страницы пользователей, и с 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()
.
Итак, если у вас есть идентификаторы ваших пользователей и идентификаторы блогов, они должны быть администраторы для, вы можете довольно легко просмотреть их и настроить их в качестве администраторов для своих конкретных сайтов.