質問
〜4000人のユーザーとLiftypeからのブログと投稿のインポートが成功した後、私は権利の問題を抱えています。すべてのユーザーは独自のブログのサブスクライバーのみです。どうすればそれをブログ(サイト全体ではなく!)管理者の特権に変更できますか? Codexで見つけたすべての既知の機能は、メインブログの管理者権利を与えますが、それは私が望むものではありません。
uweに感謝します
編集:ここで何が問題なのですか?
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は「管理者」(右!)を返しますが、ユーザーのブログプロパティに電話すると、ユーザーは常に「エディター」です。
解決
あなたの質問から、私はこれらがマルチサイトインストール内の特定のブログのユーザーであると仮定しています、正しいですか?その場合、次のことを行います。
- これらのユーザーを管理するブログにアクセスしてください。
- 左側の管理者サイドバーの[ユーザー]ボタンをクリックします
- これにより、一度に約20人のユーザーのディスプレイが表示されます(ディスプレイはページングされています)
- 宣伝したいユーザーの横にあるチェックボックスをクリックします
- リストの上部には、この選択ボックスから「役割を変更する」 - 「管理者」を選択するドロップダウンボックスがあります。
- 選択ボックスの右側にある[変更]ボタンをクリックします
ユーザーの各ページに対してこれを行う必要があり、4000人のユーザーを使用すると、約160ページの結果が得られます。しかし、それは実行可能です。
アップデート
特定のコードが必要な場合は、 WP_User
クラス。このクラスは、繰り返し使用する必要がある2つの方法を定義します。 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が管理者になるはずのブログのIDがある場合、それらを簡単にループして、特定のサイトの管理者として設定できます。