Consulta SQL para obter uma lista de todos os usuários junto com seus blogs

Como consultar uma lista de usuários junto com os blogs nos quais eles são membros em uma instalação de wordpress multi site.

Por exemplo, eu preciso dos resultados abaixo

user domain abc xyz.com abc example.com ggh example.com 

Eu tentei a consulta abaixo, mas não está listando todos os domínios …

 SELECT DISTINCT a.user_login, a.user_email, c.domain FROM wp_users a JOIN wp_usermeta b ON a.id = b.user_id JOIN wp_blogs c ON b.meta_value = c.site_id LIMIT 0 , 100 

Não tenho certeza de como funciona a rede / multi site. Alguém pode me dizer como obter o resultado?

Solutions Collecting From Web of "Consulta SQL para obter uma lista de todos os usuários junto com seus blogs"

Você pode usar get_blogs_of_user() para obter todos os blogs de um determinado usuário.

Então, para obter uma lista ordenada pelos usuários:

 global $wpdb; $blogs = array(); $user_ids = $wpdb->get_col( 'SELECT ID FROM $wpdb->users' ); foreach( $user_ids as $user_id ) { $blogs[$user_id] = get_blogs_of_user( $user_id ); } // you can use var_dump( $blogs ); to see what's in the $blogs array 

Precisando o mesmo, consegui encontrar os dados-chave nas tabelas wp_usermeta. Isso funcionou para mim:

 SELECT u.user_login, b.domain, SUBSTRING_INDEX(SUBSTRING_INDEX(um.meta_value,'"', 2), '"', -1) as role FROM wp_users u JOIN wp_usermeta um ON u.ID = um.user_id JOIN wp_blogs b ON b.blog_id = SUBSTRING(um.meta_key, 4, LENGTH(um.meta_key)-16) WHERE um.meta_key LIKE 'wp_%_capabilities' 

Resultados:

 user_login domain role ============ ============ ================ webmaster blog1.com administrator user blog1.com editor webmaster blog2.com administrator