Ändern Sie die Benutzerrolle nach dem Massenimport

Nach dem erfolgreichen Import von ~ 4000 Benutzern und deren Blogs und Posts von Liftype habe ich ein Rechteproblem: Alle Benutzer sind nur Abonnenten in ihrem eigenen Blog. Wie kann ich die Masse in Blog-Administratorrechte (nicht Sitewide!) Ändern? Alle bekannten functionen, die ich in Codex gefunden habe, geben Adminrechte für den Hauptblog, das ist nicht was ich will.

Danke, Uwe

Edit: Was ist hier falsch?

include 'wp-load.php'; global $wpdb; for ( $blog_id = 393; $blog_id 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!'; 

Code läuft gut, aber die Rolle des Benutzers ändert sich nicht.

Bearbeiten: Code Tipperrors bearbeitet, keine Änderungen am Ergebnis

@EAMann Bist du sicher, add_role ist die richtige function? Ich verstehe, dass dies für das Hinzufügen einer neuen Rolle zu WP-System ist.

Bearbeiten: Aktualisierte den Code erneut. Verwenden von update_user_meta. $ check gibt ‘Administrator’ zurück (richtig!), aber wenn ich die Blogeigenschaften des Benutzers anrufe, ist der Benutzer immer ‘Editor’.

Solutions Collecting From Web of "Ändern Sie die Benutzerrolle nach dem Massenimport"

Ich gehe davon aus, dass es sich um Benutzer in einem bestimmten Blog innerhalb einer MultiSite-Installation handelt, richtig? In diesem Fall machen Sie Folgendes:

  1. Gehen Sie zu dem Blog, für den Sie diese Benutzer zu Administratoren machen möchten.
  2. Klicken Sie auf die Schaltfläche “Benutzer” in der linken Admin-Seitenleiste
    • Dadurch wird eine Anzeige von etwa 20 Benutzern gleichzeitig angezeigt (die Anzeige wird paginiert).
  3. Klicken Sie auf das Kontrollkästchen neben den Nutzern, die Sie bewerben möchten
  4. Ganz oben in der Liste befindet sich eine Dropdown-Box mit der Aufschrift “Rolle ändern in …” – Wählen Sie “Administrator” aus dieser Auswahlbox
  5. Klicken Sie auf die Schaltfläche “Ändern” rechts neben dem Auswahlfeld

Sie müssen dies für jede Benutzerseite tun, und mit 4000 Benutzern haben Sie ungefähr 160 Seiten mit Ergebnissen. Aber es ist machbar.


Aktualisieren

Wenn Sie einen bestimmten Code möchten, empfehle ich, die WP_User class zu betrachten. Diese class definiert zwei Methoden, die Sie iterativ verwenden müssen: for_blog() und add_role() .

Grundsätzlich müssen Sie Ihre Benutzer basierend auf ihren IDs oder Nutzernamen durchlaufen. Betrachten Sie diesen ungeprüften Beispielcode:

 $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'); } 

Standardmäßig add_role() Methode add_role() der class WP_User auf das aktuelle Blog … Sie verwenden for_blog() , um zu einem bestimmten Blog zu wechseln, bevor Sie die Methode add_role() .

Wenn Sie also die IDs Ihrer Benutzer und die IDs der Blogs haben, für die sie Administratoren sein sollen, können Sie diese recht einfach durchlaufen und sie als Administratoren für ihre spezifischen Websites einrichten.