使用WordPress Learndash插件获取用户课程报名与完成数据的方法咨询
获取LearnDash指定用户的课程报名/完成数量
嘿,刚好我对LearnDash的用户数据处理比较熟,给你两种靠谱的方案——优先用官方提供的函数,实在需要定制再考虑数据库查询:
一、用LearnDash官方现成函数(推荐)
LearnDash专门提供了获取用户课程数据的函数,不用自己造轮子,稳定性和兼容性更好:
1. 获取用户报名的课程数量
用ld_get_users_courses()函数,它会返回用户已报名的所有课程ID数组,直接用count()就能得到数量:
// 替换成你要查询的用户ID $user_id = 123; // 获取用户报名的课程ID数组 $enrolled_courses = ld_get_users_courses($user_id); // 计算报名数量 $enrolled_count = count($enrolled_courses); echo "该用户已报名 {$enrolled_count} 门课程";
2. 获取用户已完成的课程数量
用ld_get_users_completed_courses()函数,同样返回完成的课程ID数组,count即可:
$user_id = 123; $completed_courses = ld_get_users_completed_courses($user_id); $completed_count = count($completed_courses); echo "该用户已完成 {$completed_count} 门课程";
提示:这两个函数都支持额外参数(比如过滤课程类型、状态),如果需要更精细的控制,可以查看函数自带的注释说明。
二、自定义数据库查询(进阶需求用)
如果官方函数满足不了你的特殊需求(比如要关联其他数据),可以直接查询WordPress数据库:
1. 查询报名课程数量
用户报名课程的记录存在wp_learndash_user_activity表(注意你的数据库前缀可能不是wp_),类型为course_enroll:
global $wpdb; $user_id = 123; $enrolled_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT post_id) FROM {$wpdb->prefix}learndash_user_activity WHERE user_id = %d AND activity_type = 'course_enroll'", $user_id ) );
2. 查询已完成课程数量
完成状态记录在learndash_user_activity表的course_completed类型中:
$completed_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT post_id) FROM {$wpdb->prefix}learndash_user_activity WHERE user_id = %d AND activity_type = 'course_completed'", $user_id ) );
注意:直接操作数据库要小心,务必用$wpdb->prepare()防止SQL注入,同时注意替换成你的实际数据库前缀。
如果还有其他细节需求(比如区分免费/付费课程、按时间筛选),可以随时补充说明~
内容的提问来源于stack exchange,提问作者Syed Haris Ali Ghaznavi
相关产品推荐
相关产品推荐

