LearnDash LMS
Fixes
- Resolved an issue where downloaded Report CSVs would only contain the header row.
Fixes
- Fixed the course category counters in a Course List block.
- Resolved an issue where approving an assignment via API did not complete the related lesson.
- Resolved an issue where creating a course using the Course Creation Wizard could not maintain the video ordering for Vimeo showcases.
- Resolved an issue where resuming a quiz could result in a corrupted start timestamp.
- Resolved an issue where when moving between questions in a quiz, the WordPress Admin Bar could overlap the question text after scrolling to the question.
- Resolved deprecated warnings in the Course Creation Wizard page.
Tweaks
- Added extra loading styles and messages for User Course Data and User Quiz Data exports on the LearnDash LMS -> Reports page.
- Course activity records are now created for users when they added to a group or when new courses are added to a group. Course activity records can be generated for groups created prior to this change by running the data upgrade at LearnDash LMS -> Settings -> Advanced -> Data Upgrades -> Upgrade Group Course Access Data.
- Updated
[ld_lesson_list]shortcode to follow the course lessons order by default when a course is provided and the shared course steps are disabled. - Added filters:
learndash_bulk_create_course_access_activities_skip,learndash_group_access_activity_chunk_size,learndash_group_courses_access_user_batch_size,learndash_scroll_offset. - Updated functions:
ld_update_course_group_access,ld_update_group_access.
Deprecates
- Deprecated actions:
learndash_report_page_buttons. - Deprecated constants:
LEARNDASH_COURSE_FUNCTIONS_LEGACY,LEARNDASH_IS_QUIZ_ACCESSABLE_LEGACY. - Deprecated filters:
learndash_course_autocompletion_multiple_final_quizzes_step,learndash_course_status_recalc_total_steps,learndash_get_content_label,learndash_get_lesson_progress_defaults,learndash_get_lesson_progress,learndash_lesson_attributes,learndash_responsive_video_domains,learndash_responsive_video_post_types,learndash_update_posts_comment_status,learndash_users_can_register. - Deprecated functions:
ld_course_check_user_access,learndash_30_focus_mode_can_complete,learndash_30_responsive_videos,learndash_activity_complete_course,learndash_activity_complete_quiz,learndash_check_query_post_type,learndash_course_get_completed_steps_legacy,learndash_course_status_legacy,learndash_get_content_label,learndash_get_course_data_legacy,learndash_get_course_lessons_list_legacy,learndash_get_course_progress_legacy,learndash_get_course_quiz_list_legacy,learndash_get_course_steps_count_legacy,learndash_get_course_steps_legacy,learndash_get_course_url,learndash_get_current_tabs_set,learndash_get_essays_by_quiz_attempt,learndash_get_exam_challenge_available_courses,learndash_get_exam_challenge_courses,learndash_get_global_quiz_list_legacy,learndash_get_lesson_attributes,learndash_get_lesson_progress,learndash_get_lesson_quiz_list_legacy,learndash_get_paynow_courses,learndash_get_quiz_pro_fields,learndash_get_step_post_status_label,learndash_get_topic_list_legacy,learndash_get_user_course_attempts_time_spent,learndash_get_user_quiz_attempts_count,learndash_get_user_quiz_attempts_time_spent,learndash_is_lesson_notcomplete_legacy,learndash_is_quiz_accessable_legacy,learndash_is_topic_notcomplete_legacy,learndash_lms_reports_page,learndash_on_iis,learndash_process_mark_complete_legacy,learndash_report_user_courses_progress,learndash_set_course_prerequisite_enabled,learndash_set_course_prerequisite,learndash_set_exam_challenge_courses,learndash_test_admin_icon,learndash_the_currency_symbol,learndash_update_posts_comment_status,learndash_user_course_last_step,learndash_users_can_register,ls_propanel_set_report_filenames.
Features
- Added Angie Agentic AI integration.
- Added compatibility with our MCP Server, available using npm as
@stellarwp/learndash-mcp-server.
Fixes
- Corrected the
ldlms/v2REST API parameter documentation formaterialsfor eachldlms/v2endpoint. - Fixed an issue where administrators could not access essays in GET
ldlms/v2/sfwd-essays. - Fixed error code handling for the
ldlms/v2/sfwd-quiz/{quiz}/statistics,ldlms/v2/sfwd-quiz/{quiz}/statistics/{statistic},ldlms/v2/sfwd-quiz/{quiz}/statistics/{statistic}/questionsandldlms/v2/sfwd-quiz/{quiz}/statistics/{statistic}/questions/{id}endpoints. - Fixed pagination and
include/excludeparameters support in the REST API v2 List User Courses endpoint. - Resolved an issue when setting dates via the REST API for date fields such as Course and Group Start and End Date. Now they will work with RFC3339 formatted dates as expected.
- Resolved an issue where Lesson and Topic pagination settings could not be set for Courses using the
POST ldlms/v2/sfwd-coursesandPATCH ldlms/v2/sfwd-courses/{id}endpoints. - Resolved an issue where
POST ldlms/v2/sfwd-questionandPATCH ldlms/v2/sfwd-question/{id}were unable to set an associated Quiz correctly. - Resolved an issue where
ldlms/v2/sfwd-courses/{id}/userswould return the wrong users. - Resolved an issue where
ldlms/v2/sfwd-questionandldlms/v2/sfwd-question/{id}would not return answer data. - Resolved an issue where a default was not being shown for endpoints under
/learndash/v1/docs/openapi. - Resolved an issue where some fields marked as being exposed to the
ldlms/v2REST API would not be exposed properly. - Resolved an issue where the Quiz Statistic link would not be included with the results for
ldlms/v2/users/{id}/quiz-progresswhen it should be. - Resolved an issue where the
step_statusfield was incorrect in the REST API v2 User Course Progress Steps endpoint. - Resolved an issue where updating a quiz using the REST API could change the internal quiz pro ID.
- The
pageandper_pageparameters forldlms/v2/users/{id}/quiz-progressnow work as expected. POST ldlms/v2/sfwd-questionandPATCH ldlms/v2/sfwd-question/{id}now set answer data using the already documentedanswerkey instead of the undocumented_answerData.ldlms/v2REST API endpoints to retrieve a specific resource no longer expose the wrong parameters.
Tweaks
- Added documentation for the
approved_statusparameter for theGET ldlms/v2/sfwd-assignmentendpoint. - Added pagination support to the REST API v2 User Course Progress Steps endpoint.
- Added request body examples to OpenAPI documentation of
ldlms/v2/sfwd-courses/{id}/steps. - Added the REST API v2 User Course Progress Exam endpoint.
- Added the
date_gmtfield in theldlms/v2/sfwd-quiz/{quiz}/statisticsendpoint. - Added the
date_started_gmtanddate_completed_gmtfields to the REST API v2 User Course Progress Steps endpoint. - Added the
date_started_gmtanddate_completed_gmtfields to the REST API v2 User Course Progress endpoints. - Added the
enrolled_atandenrolled_at_gmtfields to the REST API v2 List User Courses endpoint. - Added the
ldlms/v2/users/{user_id}/courses/{course_id}endpoint to allow updating an enrollment date for a user. - Added the
learndash/v1/progress-status,learndash/v1/progress-status/{type}andlearndash/v1/progress-status/{type}/{slug}endpoints. - Added the
step_namefield to the REST API v2 User Course Progress Steps endpoint. - Added the
valuefield to theldlms/v2/progress-status/andldlms/v2/progress-status/{slug}/endpoints. - Adds the following fields to the
ldlms/v2/groupsandldlms/v2/groups/{id}endpoints:group_start_date,group_end_date,group_courses_order_enabled,group_seats_limit. - Administrators can now access the GET
ldlms/v2/sfwd-questionendpoint whether or not the "Bypass Course limits" setting is enabled or disabled. - All logged in users can now access the
GET ldlms/v2/sfwd-assignmentandGET ldlms/v2/sfwd-assignment/{id}endpoints. Admins will be able to retrieve all Assignments, Group Leaders only Assignments submitted by themselves or a user within one of their Groups for Courses within those Groups, and all other users will only be able to retrieve their own Assignments. - By default,
learndash/v1/docs/openapino longer documents certain HTTP methods forldlms/v2endpoints in order to save on token size. This can be reverted to the previous functionality usinglearndash/v1/docs/openapi?trim=false. - Group Course pagination settings can now be set via
POST ldlms/v2/groupsandPATCH ldlms/v2/groups/{id}. At this time, this setting does nothing if Modern Group Pages are enabled. - Improved REST API parameter descriptions for setting Course Prerequisites.
- Improved parameters description for
/ldlms/v2/users/{user_id}/course-progress/{course_id}and/ldlms/v2/users/{user_id}/course-progress/{course_id}/steps. - Improved parameters description for the
ldlms/v2/sfwd-quiz/{quiz}/statistics,ldlms/v2/sfwd-quiz/{quiz}/statistics/{statistic},ldlms/v2/sfwd-quiz/{quiz}/statistics/{statistic}/questionsandldlms/v2/sfwd-quiz/{quiz}/statistics/{statistic}/questions/{id}endpoints. - Improved route discovery for OpenAPI documentation of existing REST API endpoints.
- Improved the
ldlms/v2/question-types/andldlms/v2/question-types/{slug}/endpoints. Added thevaluefield, removed thedescriptionfield, updated theslugfield to be a hyphenated slug instead of an underscore slug, both variants are supported for compatibility. - Improved the descriptions for parameters in the
ldlms/v2/sfwd-quizandldlms/v2/sfwd-quizzesendpoints. - Improved the descriptions for parameters in the
ldlms/v2/users/{user_id}/course-progress/*endpoints. - Normalized the
ldlms/v2/users/{user_id}/coursesendpoints to always return thecodefield with thelearndash_prefix. - Normalized the
ldlms/v2/users/{user_id}/groupsendpoints to always return thecodefield with thelearndash_prefix. - Now
lessonandtopicparameters in GETldlms/v2/sfwd-essayswork with or without thecourseparameter. - Now the GET endpoint
ldlms/v2/users/{user_id}/course-progress/{course_id}/stepsreturns the status value in thestep_statusfield (with underscore). - Now the GET endpoints
ldlms/v2/users/{user_id}/course-progressandldlms/v2/users/{user_id}/course-progress/{course_id}returns the status value in theprogress_statusfield (with underscore). - Now the
datefield from theldlms/v2/sfwd-quiz/{quiz}/statisticsendpoint returns the date in the local timezone. - Removed admin alerts related to Solid Backups.
- Removed the "Course Admin Auto-enrollment" permission dependency for administrators in
wp-json/ldlms/v2/sfwd-courses/<id>/steps. - Removed the nested array from the GET endpoint
/ldlms/v2/users/{user_id}/course-progress/{course_id}. - Removed the nested array from the REST API v2 User Course Progress Steps endpoint.
- Removed the nested array from the
ldlms/v2/sfwd-quiz/{quiz}/statistics/{statistic}/questions/{id}endpoint response. - Removed the unused
searchparameter fromldlms/v2/users/{id}/quiz-progress. - Retrieving quizzes via
ldlms/v2/sfwd-quizno longer requires acourseparameter for administrators. - The GET endpoint
ldlms/v2/groups/{id}/coursesnow returns the same fields as the GETldlms/v2/sfwd-coursesendpoint. - The GET endpoint
ldlms/v2/users/{user_id}/coursesnow returns the same fields as the GETldlms/v2/sfwd-coursesendpoint. - The GET endpoint
ldlms/v2/users/{user_id}/groupsnow returns the same fields as the GETldlms/v2/groupsendpoint. - The REST API settings section under LearnDash LMS -> Settings -> Advanced is now hidden if you had not made any modifications there previously.
- The
PATCH ldlms/v2/sfwd-assignmentendpoint is now available to admins and any user with the ability to edit other user's Assignments, which normally would only include Group Leaders. Admins can edit any user's Assignments including their own. Group Leaders will only be able to edit those belonging to users within their Groups and only for Assignments submitted for a Course within their Groups. - The
course_start_dateandcourse_end_datefield types forPOST ldlms/v2/sfwd-coursesandPATCH ldlms/v2/sfwd-courses/{id}have been reverted tostringas they were before v4.25.2. - The
custom_fields_formsparameter forldlms/v2/sfwd-quizandldlms/v2/sfwd-quiz/{id}is now marked read-only. Attempting to set the value previously did nothing. - The
date_startedanddate_completedfields in the REST API v2 User Course Progress endpoints now return the date in the site timezone. - The
ldlms/v2/sfwd-quizandldlms/v2/sfwd-quiz/{id}endpoints now accept and return WordPress Post IDs for theprerequisitesfield instead of internal Pro Quiz IDs. - The
ldlms/v2/sfwd-quizendpoint no longer requires thecourseparameter for non-administrators if they pass through alessonortopicparameter when Shared Course Steps are disabled. - The
ldlms/v2/users/{user_id}/course-progress/{course_id}/stepsendpoint now returns the appropriate progress status based on the post type of the course step. - The
learndash/v1/docs/openapiendpoint now explicitly lists the namespace as part of thepathskey to avoid potential collisions across namespaces. - The parameter description for
question_typefor theldlms/v2/sfwd-questionandldlms/v2/sfwd-question/{id}endpoints has been improved. - Updated the
orderparameter forldlms/v2/users/{id}/quiz-progressto no longer be case sensitive. - Updated the
orderbyparameter forldlms/v2/users/{id}/quiz-progressto no longer expectIDwhen sorting by IDs and can now also acceptidas it was documented. - Updated the required WP version from 6.6 to 6.7.
POST ldlms/v2/sfwd-questionandPATCH ldlms/v2/sfwd-question/{id}now return the same structure asGET ldlms/v2/sfwd-question/{id}.prerequisite_enabledis no longer exposed to the REST API forldlms/v2/sfwd-coursesandldlms/v2/sfwd-courses/{id}. This setting is not meant to be set via the REST API and you should instead setrequirements_for_enrollmenttocourse_prerequisite_enabledfor the same behavior.- Added filters:
learndash_model_assignment_course,learndash_post_type_progress_statuses,learndash_settings_section_{$this->settings_section_key}_is_visible. - Added functions:
learndash_course_challenge_exam_get_questions_stats,learndash_get_user_quiz_average. - Updated filters:
learndash_group_courses_per_page,learndash_quiz_info_paged,learndash_rest_openapi_documentation. - Updated functions:
learndash_course_get_completed_steps,learndash_course_status,learndash_get_certificate_link,learndash_get_course_data,learndash_get_course_groups,learndash_get_course_lessons_list,learndash_get_course_progress,learndash_get_course_quiz_list,learndash_get_course_steps_count,learndash_get_course_steps,learndash_get_global_quiz_list,learndash_get_lesson_quiz_list,learndash_get_topic_list,learndash_group_enrolled_courses,learndash_is_lesson_notcomplete,learndash_is_quiz_accessable,learndash_is_topic_notcomplete,learndash_is_user_in_group,learndash_process_mark_complete.
Security
- Tightened security around user content when editing LearnDash elements.
Tweaks
- Updated templates:
themes/legacy/templates/course_navigation_admin.php,themes/legacy/templates/quiz_navigation_admin.php.
Fixes
- Addressed a regression in the RazorPay library related to the
REQUESTS_SILENCE_PSR0_DEPRECATIONSconstant. - Fixed an issue where the quiz Legend (question numbers at the top of the quiz) could lose the correct/incorrect flag, after the user answered a question.
- Resolved an issue where if Quiz Resume Data was stored in the browser and not yet sent to the server and the logged-in user logged out and another user logged in, the Quiz Resume Data would be shared between them.
Tweaks
- Fixed the markup of the modern topic layout.
- Improved validation for quiz resume data to prevent corrupted data from causing issues when resuming a quiz.
- Quiz Resume Data is now stored via
localStorageinstead of a Cookie to avoid issues with large Quizzes. - Updated templates:
themes/ld30/templates/modern/topic/content.php.
Fixes
- Fixed an issue with block toolbars in WP 6.9.
- Resolved an issue where Lesson, Topic, Group, and Challenge Exam settings tabs would not load.
- Resolved an issue where links within LearnDash Blocks could be clicked and would replace the block with the contents of that page.
- Resolved an issue where sometimes the block editor wouldn't be visible for Courses.
Fixes
- Fixed a PHP warning when accessing post content in contexts where the global
$postvariable is null. - Fixed the WP logo in the fullscreen mode on post editing page.
- Resolved an issue where the Course Builder would not be visible if meta boxes are hidden in WP 6.9+.
- Resolved an issue where the Course CSV Export on the LearnDash LMS -> Reports page would sometimes get stuck at 50% complete.
- Resolved an issue where the export buttons on the LearnDash LMS -> Reports page would not initialize properly in some circumstances.
Tweaks
- Improved Block compatibility with WordPress 6.9.
- Improved
get_comments_numberfilter return type to match WordPress core behavior for strict type comparison compatibility. - LearnDash Cloud: removed the LearnDash Cloud menu and standardized the LearnDash help page.
- Removed the "new" tag from Presenter Mode.
Fixes
- Fixed
e(...).dialog is not a functionconsole error. This was due to a missing dependency on some pages. - Fixed a style conflict for Kadence Gallery and other related blocks on the Course pages when in focus mode.
- Orders with a discount that reduces the price to 0 will now show on the Orders page.
- Resolved an issue where the Reporting block Download button would not return the same results as displayed on the page.
- Resolved issue with
[learndash_course_grid]shortcode loading styles when rendered from an Elementor or Divi template. - Resolves issue where the first comment would sometimes be cropped off at the top.
Tweaks
- Added notice linking to documentation for v5.0.0. This notice will be displayed once v5.0.0 is available.
- Added filters:
learndash_location_is_plugins_page,learndash_location_is_updates_page.
Fixes
- Authentication files that were automatically included in ZIPs downloaded from account.learndash.com will now be deleted when deauthenticating a site.
- Fixed a broken layout issue of the
OpenAI API Keyfield's input note. - Fixed a conflict with Divi theme builder when course reviews module was active.
- Fixed a fatal error with 3rd party plugins that was caused by an explicit return type on a filter.
- Fixed an issue where essays that were in draft, trashed or deleted appeared on user profile page.
- Fixed an issue where updating a quiz post after previously adding a custom field would create a duplicate custom field.
- Fixed missing LearnDash reports widgets titles.
- Resolved an issue when rendering free choice quiz question answers with angle brackets.
- Resolved an issue where disabling the quiz custom field setting would not keep it disabled after the editor page was reloaded.
- Resolved an issue where the "Save Quiz data to the server every" setting was not respected and instead always used the default value.
- Resolved an issue where the
LEARNDASH_QUIZ_RESUME_COOKIE_SEND_TIMER_DEFAULTconstant was not respected by the "Save Quiz data to the server every" quiz setting. The default value is now 20 seconds instead of 5. - Restored the Question Overview Legend when enabled.
Tweaks
- Added course and group type enrollment statistics to Site Health.
- Added temporary seasonal UI enhancement.
- Improved accessibility for the Question Overview Legend.
- Modern Course Pages are no longer automatically enabled for new installs.
- Added filters:
learndash_admin_banners. - Added templates:
themes/ld30/templates/quiz/partials/show_quiz_review_legend.php,themes/ld30/templates/quiz/partials/show_quiz_review_questions.php. - Updated templates:
includes/reports/templates/ld-propanel-full-page.php,themes/ld30/templates/shortcodes/profile/quiz-row.php.
