Frage

Nach erfolgreichem Import von ~ 4000 Benutzern und ihren Blogs und Posts von LifeType habe ich ein Rechteproblem: Alle Benutzer sind nur Abonnenten in ihrem eigenen Blog. Wie kann ich es massen, es in den Berechtigung von Administratoren in Blogs zu ändern? Alle bekannten Funktionen, die ich in Codex gefunden habe, gibt Administratorrechte für den Hauptblog, das ist nicht das, was ich will.

Danke Uwe

EDIT: Was ist hier los?

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!';

Code ist gut läuft, aber es gibt keine Änderung der Rolle des Benutzers.

Bearbeiten: Code Tippfehler bearbeitet, keine Änderungen zum Ergebnis

@Amann bist du sicher, add_role ist die richtige Funktion? Ich verstehe, dass dies zum Hinzufügen einer neuen Rolle zum WP -System ist.

Bearbeiten: Der Code hat erneut aktualisiert. Verwenden Sie update_user_meta. $ Check gibt 'Administrator' (richtig!), Aber wenn ich die Blog -Eigenschaften des Benutzers aufrufe, ist der Benutzer immer "Editor".

War es hilfreich?

Lösung

Aus Ihrer Frage gehe ich davon aus, dass dies Benutzer in einem bestimmten Blog innerhalb einer Mehrfachinstallation sind, richtig? In diesem Fall Folgendes tun:

  1. Gehen Sie in das Blog, für das Sie diese Benutzeradministratoren machen möchten.
  2. Klicken Sie in der admin-Seitenleiste der linken Seite auf die Schaltfläche "Benutzer"
    • Dadurch werden Sie eine Anzeige von etwa 20 Benutzern gleichzeitig darstellen (das Display wird ausgelegt)
  3. Klicken Sie auf das Kontrollkästchen neben den Benutzern, die Sie bewerben möchten
  4. Ganz oben in der Liste befindet sich ein Dropdown -Feld mit der Aufschrift "Rolle ändern in ..." - Wählen Sie "Administrator" aus diesem Select -Feld aus
  5. Klicken Sie rechts im Feld "Auswählen" auf die Schaltfläche "Ändern"

Sie müssen dies für jede Seite von Benutzern tun, und mit 4000 Benutzern haben Sie etwa 160 Seiten mit Ergebnissen. Aber es ist machbar.


Aktualisieren

Wenn Sie einen bestimmten Code wünschen, empfehle ich mir, das anzusehen WP_User Klasse. Diese Klasse definiert zwei Methoden, die Sie iterativ verwenden müssen: for_blog() und add_role().

Grundsätzlich müssen Sie Ihre Benutzer entweder auf ihren IDs oder Benutzernamen durchlaufen. Bedenken Sie ungetestet 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 die add_role() Methode der WP_User Die Klasse wird auf den aktuellen Blog reagieren ... Sie verwenden for_blog() Um zu einem bestimmten Blog zu wechseln, bevor Sie das ausführen add_role() Methode.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top