0

0

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

霞舞

霞舞

发布时间:2025-08-29 22:30:02

|

837人浏览过

|

来源于php中文网

原创

获取与特定分类法关联的用户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 参数:

koly.club
koly.club

一站式社群管理工具

下载
$user_args = array(
    'include' => array(11, 33, 52, 57, 997) // 添加你的用户ID,用逗号分隔
);

$users = get_users( $user_args );

//Loop through each peche author
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->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查询,以避免潜在的安全风险。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

685

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

324

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

348

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1117

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

359

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

717

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

577

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

419

2024.04.29

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十三期_前端开发
第二十三期_前端开发

共98课时 | 7.5万人学习

WordPress视频教程
WordPress视频教程

共23课时 | 9.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号