質問

〜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は「管理者」(右!)を返しますが、ユーザーのブログプロパティに電話すると、ユーザーは常に「エディター」です。

役に立ちましたか?

解決

あなたの質問から、私はこれらがマルチサイトインストール内の特定のブログのユーザーであると仮定しています、正しいですか?その場合、次のことを行います。

  1. これらのユーザーを管理するブログにアクセスしてください。
  2. 左側の管理者サイドバーの[ユーザー]ボタンをクリックします
    • これにより、一度に約20人のユーザーのディスプレイが表示されます(ディスプレイはページングされています)
  3. 宣伝したいユーザーの横にあるチェックボックスをクリックします
  4. リストの上部には、この選択ボックスから「役割を変更する」 - 「管理者」を選択するドロップダウンボックスがあります。
  5. 選択ボックスの右側にある[変更]ボタンをクリックします

ユーザーの各ページに対してこれを行う必要があり、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がある場合、それらを簡単にループして、特定のサイトの管理者として設定できます。

ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top