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

Learndash Enroll时重置课程/测验进度且保留证书记录的实现问询

LearnDash 用户重新报名课程时重置进度解决方案

核心依赖钩子与函数

  • 报名触发钩子:learndash_user_enrolled,用户成功报名课程后自动触发,无需额外判断报名状态
  • 课程进度重置函数:learndash_delete_user_course_progress($user_id, $course_id),仅清除用户对应课程的学习进度、节点完成标记、课程状态,不会操作历史证书数据
  • 测验记录重置函数:learndash_delete_quiz_attempts_for_user($user_id, $course_id),可选调用,用于清空用户对应课程下所有测验的作答、得分、尝试次数记录

可直接部署的实现代码

add_action( 'learndash_user_enrolled', 'reset_course_progress_on_re_enroll', 10, 3 );
function reset_course_progress_on_re_enroll( $user_id, $course_id, $access_expiry ) {
    // 仅当用户之前已完成过该课程时才执行重置,避免首次报名误清数据
    $course_completed = learndash_is_course_complete( $user_id, $course_id );
    if ( $course_completed ) {
        // 重置课程全量进度、完成状态
        learndash_delete_user_course_progress( $user_id, $course_id );
        // 可选:清空所有测验尝试记录,不需要可删除该行
        learndash_delete_quiz_attempts_for_user( $user_id, $course_id );
    }
}

将上述代码添加到主题的functions.php文件或自定义功能插件中即可生效。

适配性说明

  • 完全匹配业务需求:已生成的证书存储在独立的sfwd-certificates自定义类型关联表中,上述重置逻辑不会触碰该表数据,所有历史过期完成记录都会完整留存
  • 适配当前课程配置:免费非Open类型的课程过期逻辑不受影响,用户过期后重新报名时会自动触发重置,新学习周期进度从零开始
  • 可灵活调整:如果需要保留部分历史数据(比如特定测验的历史得分),可在函数中增加过滤条件,指定排除不需要重置的内容

内容的提问来源于stack exchange,提问作者user16800423

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:48:03