You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:21:07