Pregunta

después de la importación exitosa de ~ 4000 usuarios y sus blogs y mensajes de Liftype que tiene un problema de derechos: todos los usuarios sólo son abonados en su propio blog. ¿Cómo puedo masa cambiarlo al blog (no todo el sitio!) Privilegios de administrador? Todas las funciones conocidas que he encontrado en el Codex da derechos de administrador para el blog principal, que no es lo que quiero.

Gracias Uwe

Editar: Lo que está mal aquí?

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

El código es así correr, pero no hay ningún cambio en el papel del usuario.

Editar: Código de error tipográfico editado, no hay cambios para dar como resultado

@EAMann ¿Seguro, add_role es la función de la derecha? Entiendo que esto es para añadir una nueva función al sistema de WP.

Editar: Actualizado el código de nuevo. Usando update_user_meta. $ Comprobación devuelve 'administrador' (derecha), pero si llamo propiedades de blog del usuario, el usuario es siempre 'editor'.

¿Fue útil?

Solución

A partir de su pregunta, estoy suponiendo que éstos son los usuarios en un blog específico dentro de una instalación MultiSite, correcto? En ese caso, haga lo siguiente:

  1. Ir al blog para el que desea realizar estos administradores de los usuarios.
  2. Haga clic en el botón "Usuarios" en el lado izquierdo de la barra lateral de administración
    • Esto le presentará una pantalla de cerca de 20 usuarios a la vez (en la pantalla se pagina)
  3. Haga clic en la casilla junto a los usuarios que desea promover
  4. En la parte superior de la lista es una lista desplegable que dice "Cambiar función a ..." - Seleccione "administrador" de este selecto cuadro
  5. Haga clic en el botón "Cambiar" a la derecha de la caja de selección

Vas a tener que hacer esto para cada página de los usuarios, y con 4.000 usuarios a los que va a tener alrededor de 160 páginas de resultados. Pero es factible.


Actualizar

Si quieres algo de código específico, recomiendo mirar el WP_User . Esta clase define dos métodos que había necesidad de utilizar de manera iterativa:. for_blog() y add_role()

Básicamente, tendrá que recorrer sus usuarios basados ??ya sea en sus identificadores o nombres de usuario. Considere esto no probado código de ejemplo:

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

Por defecto, el método de la clase add_role() WP_User actuará en el blog actual ... for_blog() utiliza para cambiar a un blog específico antes de ejecutar el método add_role().

Así que si usted tiene los identificadores de los usuarios y los ID de los blogs que se supone que ser administradores para, puede recorrer a través de ellos con bastante facilidad y les configura como administradores de sus sitios específicos.

Licenciado bajo: CC-BY-SA con atribución
scroll top