Question

après l'importation réussie de ~ 4000 utilisateurs et leurs blogs et messages de Liftype J'ai un problème de droits: tous les utilisateurs ne sont abonnés à leur propre blog. Comment puis-je changer la masse pour le blog (pas Sitewide!) Des privilèges d'administrateur? Toutes les fonctions connues dans le Codex je trouve donne des droits d'administrateur pour le blog principal, ce n'est pas ce que je veux.

Merci Uwe

Edit: Quel est le problème ici?

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

Le code est bien en cours d'exécution, mais il n'y a pas de changement au rôle de l'utilisateur.

Edit: faute de frappe de code modifié, aucune modification résultat

@EAMann Etes-vous sûr, add_role est la bonne fonction? Je comprends cela est d'ajouter un nouveau rôle à système WP.

Edit: Mise à jour le code. En utilisant update_user_meta. $ Chèque rend « administrateur » (à droite!), Mais si j'appelle les propriétés de blog de l'utilisateur, l'utilisateur est toujours « éditeur ».

Était-ce utile?

La solution

A partir de votre question, je suppose que ce sont les utilisateurs sur un blog spécifique dans une installation multisite, correcte? Dans ce cas, procédez comme suit:

  1. Accéder au blog pour lequel vous voulez faire ces administrateurs des utilisateurs.
  2. Cliquez sur le bouton « Utilisateurs » dans l'admin côté gauche barre latérale
    • Cela vous présentera un écran d'environ 20 utilisateurs à la fois (l'affichage est paginé)
  3. Cliquez sur la case à cocher les utilisateurs que vous souhaitez promouvoir
  4. En haut de la liste est une liste déroulante qui dit « Modifier le rôle de ... » - Sélectionnez « Administrateur » de cette boîte de sélection
  5. Cliquez sur le bouton « Modifier » à droite de la zone de sélection

Vous devrez le faire pour chaque page des utilisateurs, et avec 4000 utilisateurs que vous aurez environ 160 pages de résultats. Mais il est faisable.


Mise à jour

Si vous voulez un code spécifique, je vous recommande regarder le WP_User classe. Cette classe définit deux méthodes que vous auriez besoin d'utiliser de manière itérative. for_blog() et add_role()

En gros, vous devrez faire une boucle par vos utilisateurs en fonction soit sur leur carte d'identité ou les noms d'utilisateur. Considérez ceci non testé exemple de code:

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

Par défaut, la méthode add_role() de la classe WP_User agira sur le blog en cours ... vous utilisez for_blog() pour passer à un blog spécifique avant d'exécuter la méthode add_role().

Donc, si vous avez les ids de vos utilisateurs et les IDs des blogs qu'ils sont censés être des administrateurs pour, vous pouvez faire une boucle à travers eux assez facilement et les mettre en place comme administrateurs pour leurs sites spécifiques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top