用于获取具有角色订阅者的用户的SQL查询

时间:2015-02-19 22:42:36

标签: sql wordpress

我的SQL查询没有运气,无法让用户获得角色订阅者:

SELECT 
      ID, 
      display_name 
FROM 'wp_users' 
INNER JOIN 'wp_usermeta' ON 'wp_users'.ID = 'wp_usermeta'.user_id 
WHERE 'wp_usermeta'.meta_key = 'wp_capabilities' 
AND ('wp_usermeta'.meta_value LIKE 'subscriber') ORDER BY display_name

任何人都可以帮助我吗?

7 个答案:

答案 0 :(得分:10)

我已经得到了我的问题的答案:

SELECT wp_users.ID, wp_users.user_nicename 
FROM wp_users INNER JOIN wp_usermeta 
ON wp_users.ID = wp_usermeta.user_id 
WHERE wp_usermeta.meta_key = 'wp_capabilities' 
AND wp_usermeta.meta_value LIKE '%subscriber%' 
ORDER BY wp_users.user_nicename

如果有人遇到同样的问题,请使用我上面的SQL查询。

答案 1 :(得分:3)

这是@ qqruza答案的一个略微变体,包括用户的电子邮件和角色,并返回所有角色的用户。

dracula-theme

答案 2 :(得分:2)

我不熟悉WordPress内部结构,但我可以告诉你,你的LIKE语句可能是错误的。 LIKE参数中没有隐式/自动通配符,因此您拥有(没有通配符)与使用=基本相同。 IE浏览器。你可能想要:

'wp_usermeta'.meta_value LIKE '%subscriber%'

答案 3 :(得分:2)

这对我有用:

     SELECT a.ID, a.user_login  
     FROM wp_users a
     JOIN wp_usermeta b ON a.ID = b.user_id 
     WHERE b.meta_key = 'wp_capabilities' and b.meta_value like '%contributor%'
     ORDER BY a.user_nicename

答案 4 :(得分:1)

您可以使用:

$user_query = new WP_User_Query( array( 'role' => 'Subscriber' ) );

答案 5 :(得分:0)

如果您想获取其他元信息,则可以使用子查询,只需记住子查询越多,整个查询的速度就越慢。

SELECT 
    ID, 
    user_email,
    (SELECT `meta_value` FROM wp_usermeta WHERE wp_usermeta.user_id=wp_users.ID AND `wp_usermeta`.`meta_key` = 'first_name') as first_name,
    (SELECT `meta_value` FROM wp_usermeta WHERE wp_usermeta.user_id=wp_users.ID AND `wp_usermeta`.`meta_key` = 'last_name') as last_name,
    user_registered
FROM wp_users
JOIN wp_usermeta ON wp_usermeta.user_id = wp_users.ID
WHERE `meta_value` LIKE '%subscriber%';

答案 6 :(得分:0)

SELECT id,
       user_email,
       (SELECT meta_value
        FROM   wp_usermeta
        WHERE  wp_usermeta.user_id = wp_users.id
               AND wp_usermeta.meta_key = 'first_name') AS first_name,
       (SELECT meta_value
        FROM   wp_usermeta
        WHERE  wp_usermeta.user_id = wp_users.id
               AND wp_usermeta.meta_key = 'last_name')  AS last_name,
       user_registered
FROM   wp_users
       JOIN wp_usermeta
         ON wp_usermeta.user_id = wp_users.id
WHERE meta_value  LIKE '%subscriber%'