我的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
任何人都可以帮助我吗?
答案 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%'