【问题标题】:WordPress SQL get specific user by user roleWordPress SQL 按用户角色获取特定用户
【发布时间】:2021-12-11 13:31:17
【问题描述】:

您好,我正在尝试通过 SQL 查询从数据库中获取特定用户。还试图添加一些条件。 User role name is: Student 但是我的代码无法得到正确的结果。

SELECT um.user_id, um.meta_key, um.meta_value, u.user_email 
FROM wp_usermeta AS um INNER JOIN wp_users AS u ON (u.ID = um.user_id) 
WHERE meta_key IN ('first_name', 'last_name','role') AND (meta_value NOT LIKE '%Student' AND u.user_email NOT LIKE '%@yourdomain.com')

【问题讨论】:

  • 这是查询执行的结果,您期望什么?

标签: php sql wordpress


【解决方案1】:

您可以使用此函数按角色获取用户数组。

# This goes in functions.php
function get_users_by_role($role, $orderby, $order) {
    $args = array(
        'role'    => $role,
        'orderby' => $orderby,
        'order'   => $order
    );

    $users = get_users( $args );

    return $users;
}

然后你可以像这样使用它:

$users = get_users_by_role('student', 'user_nicename', 'ASC');

或者你可以像这样使用get_users()

$students = get_users( array( 'role__in' => array( 'student' ) ) );

或者

$students = get_users( 'role=student' );

或者user_query方式

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

如果你坚持使用SQL,那么你可以使用

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 '%student%' 
ORDER BY wp_users.user_nicename

【讨论】:

  • 谢谢,需要了解更多信息,我们可以将此代码用于删除用户DELETE 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 '%student%' ORDER BY wp_users.user_nicename
  • 你想达到什么目的?
猜你喜欢
  • 1970-01-01
  • 2021-05-05
  • 2014-08-31
  • 2016-08-11
  • 2014-08-06
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多