获取与特定分类法关联的用户ID列表

获取与特定分类法关联的用户id列表

本文介绍了如何在WordPress中获取与特定分类法(taxonomy)关联的用户ID列表。通过使用get_users()函数和WP_Query类,我们可以遍历所有用户,并检查他们是否发布了与特定分类法相关的文章。此外,还提供了一种使用$wpdb对象直接执行SQL查询的方法,以更高效地获取用户ID。

方法一:使用 get_users() 和 WP_Query

此方法通过遍历所有用户,并使用 WP_Query 检查每个用户是否发布了与特定分类法相关的文章。

$user_args = array( 'orderby' => 'ID' );$users = get_users($user_args);// 循环遍历每个用户foreach($users as $user){    $user_posts = new WP_Query(array(        'post_type' => 'product', // 你的自定义文章类型        'author'         => $user->ID,        'posts_per_page' => -1,        'tax_query'      => array(            array(                'taxonomy' => 'product_cat', // 你的自定义分类法slug                'field'    => 'term_id',                'terms'    => 22 // 你的分类法term ID            )        )    ));    if( $user_posts->have_posts() ) {        echo $user->first_name . ' ' . $user->last_name. ' associated with taxonomy 22'."
"; }}

代码解释:

get_users($user_args): 获取所有用户。$user_args 允许你自定义查询用户的方式,例如按ID排序。WP_Query: 用于查询文章。post_type: 指定要查询的文章类型。author: 指定要查询的作者ID。posts_per_page: 设置为 -1 表示获取所有文章。tax_query: 用于指定分类法查询条件。taxonomy: 分类法的 slug。field: 用于匹配的字段,这里使用 term_id。terms: 要匹配的 term ID。$user_posts->have_posts(): 检查查询结果是否有文章。

注意事项:

将 product 替换为你自己的自定义文章类型。将 product_cat 替换为你自己的自定义分类法 slug。将 22 替换为你自己的分类法 term ID。如果只需要用户ID,可以将 echo $user->first_name . ‘ ‘ . $user->last_name. ‘ associated with taxonomy 22’.””; 替换为 echo $user->ID.””;

限制特定用户ID:

如果你只想查询特定用户ID,可以使用 include 参数:

$user_args = array(    'include' => array(11, 33, 52, 57, 997) // 添加你的用户ID,用逗号分隔);$users = get_users( $user_args );//Loop through each peche authorforeach($users as $user){    $user_posts = new WP_Query(array(        'post_type' => 'product', // 你的自定义文章类型        'author'         => $user->ID,        'posts_per_page' => -1,        'tax_query'      => array(            array(                'taxonomy' => 'product_cat', // 你的自定义分类法slug                'field'    => 'term_id',                'terms'    => 22 // 你的分类法term ID            )        )    ));    if( $user_posts->have_posts() ) {        echo $user->ID."
"; }}

方法二:使用 $wpdb 直接执行 SQL 查询

此方法直接执行 SQL 查询,效率更高,尤其是在用户数量很多的情况下。

global $wpdb;$all_ids = array();$result = $wpdb->get_results( "SELECT u.ID FROM wp_users u INNER JOIN wp_term_relationships r ON u.ID = r.object_id WHERE u.user_status = 0 AND r.term_taxonomy_id = 1186", ARRAY_A );foreach ( $result as $key => $id ) {    $all_ids[] = $id['ID'];}if( !empty( $all_ids ) ){    echo implode( ',', $all_ids );}

代码解释:

global $wpdb;: 声明全局 $wpdb 对象,用于与数据库交互。$wpdb->get_results(): 执行 SQL 查询并返回结果。”SELECT u.ID FROM wp_users u INNER JOIN wp_term_relationships r ON u.ID = r.object_id WHERE u.user_status = 0 AND r.term_taxonomy_id = 1186″: SQL 查询语句,用于获取与特定 term_taxonomy_id 关联的用户ID。ARRAY_A: 指定结果以关联数组形式返回。foreach: 遍历结果集,将用户ID添加到 $all_ids 数组。implode( ‘,’, $all_ids ): 将 $all_ids 数组中的用户ID用逗号连接成字符串。

注意事项:

确保你了解 SQL 查询语句,并根据你的数据库结构进行调整。将 1186 替换为你自己的 term_taxonomy_id。使用 $wpdb->prepare() 来防止 SQL 注入攻击,特别是当 term_taxonomy_id 是一个变量时。

示例,使用 $wpdb->prepare():

global $wpdb;$term_taxonomy_id = 1186; // 你的 term_taxonomy_id$all_ids = array();$query = $wpdb->prepare("SELECT u.ID FROM wp_users u INNER JOIN wp_term_relationships r ON u.ID = r.object_id WHERE u.user_status = 0 AND r.term_taxonomy_id = %d", $term_taxonomy_id);$result = $wpdb->get_results( $query, ARRAY_A );foreach ( $result as $key => $id ) {    $all_ids[] = $id['ID'];}if( !empty( $all_ids ) ){    echo implode( ',', $all_ids );}

总结

本文介绍了两种在 WordPress 中获取与特定分类法关联的用户ID的方法。第一种方法使用 get_users() 和 WP_Query,代码更易于理解,但效率较低。第二种方法使用 $wpdb 直接执行 SQL 查询,效率更高,但需要一定的 SQL 知识。选择哪种方法取决于你的具体需求和技术水平。推荐使用 $wpdb->prepare() 来构建SQL查询,以避免潜在的安全风险。

以上就是获取与特定分类法关联的用户ID列表的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1293460.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
MongoDB PHP驱动:理解连接行为与认证失败的根源
上一篇 2025年12月11日 09:07:02
AngularJS应用中实现多标签页/窗口独立用户会话管理
下一篇 2025年12月11日 09:07:16

相关推荐

发表回复

登录后才能评论
关注微信