WordPress中如何用PHP获取关联指定taxonomy的用户ID列表
解决方案
方法1:使用get_objects_in_term实现(符合你期望的写法)
该函数是WordPress原生用于查询指定分类项关联对象的工具,代码示例如下:
// 三个参数分别为:目标term_taxonomy_id、自定义用户分类法别名、指定对象类型为用户 $related_user_ids = get_objects_in_term( 1186, '替换为你的用户分类法别名', [ 'object_type' => 'user' ] ); // 过滤掉用户状态异常的账号,和你SQL中的user_status=0条件对应 $valid_user_ids = []; foreach ( $related_user_ids as $uid ) { $user = get_user_by( 'id', $uid ); if ( $user && $user->user_status === 0 ) { $valid_user_ids[] = $uid; } }
最终$valid_user_ids就是符合条件的用户ID数组。
方法2:使用WP_User_Query实现(更简洁,无需二次过滤)
直接通过用户查询类的分类查询参数实现,底层自动完成关联表拼接和条件过滤,和你写的SQL效果完全一致:
$user_query = new WP_User_Query( [ 'tax_query' => [ [ 'taxonomy' => '替换为你的用户分类法别名', 'field' => 'term_taxonomy_id', // 指定按term_taxonomy_id匹配 'terms' => 1186, ] ], 'user_status' => 0, // 直接过滤正常状态用户 'fields' => 'ID', // 仅返回用户ID,优化查询性能 ] ); $user_ids = $user_query->get_results();
注意事项
- 所有代码中的
替换为你的用户分类法别名需要修改为你注册用户分类时register_taxonomy函数传入的第一个参数值。 - 如果你确认该用户分类下关联的所有用户都是正常状态,方法1可以省略二次过滤的步骤直接使用
get_objects_in_term的返回结果。
内容的提问来源于stack exchange,提问作者futureyoon
相关产品推荐
相关产品推荐

