LearnDash
Recent Updates
Compatibilitys
- Improved blocks compatibility with PHP 8.4.
Fixes
- Fixed courses filtering by progress status in the
LearnDash Course Gridblock. - Number input fields now properly return a number via the REST API if the field is saved with no value.
- Prevented PayPal scripts from being enqueued on Checkout and Profile pages when PayPal Checkout is disabled.
- Resolved an issue where cloning a Lesson, Topic, or Course built with Elementor would result in a broken layout.
- Resolved an issue where locally installed translations without remote GlotPress data were not displayed and could not be removed on the Translations page.
- Resolved an issue where non LearnDash plugins could be visible on the Add-ons page.
Tweaks
- Added hints to the Modern Course and Modern Group fields to clarify tabs behavior.
- Added filters:
learndash_hub_installed_projects.
Fixes
- Resolved
_load_textdomain_just_in_timenotice on WordPress 6.7+. - Corrected text domain in dependency check message.
Tweaks
- Added WordPress 6.6 requirement.
Fixes
- Resolved a deprecation warning related to
trim()usage. - Resolved an issue where background images may not load when viewing a Certificate.
Fixes
- Resolved an issue where downloaded Report CSVs would only contain the header row.
Fixes
- Resolved an incompatibility with Archive Templates in Elementor Pro.
Tweaks
- Instructor Commission forms now accept and display decimal amounts using locale-appropriate formatting (e.g., 1,50 for European locales, 1.50 for US locales).
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.
Fixes
- CSV and XLS download buttons now work correctly in the Student Quiz Results table.".
- Fixed a Learners Pass/Fail Rate Block not working on a custom page without other blocks.
- Fixed missing quiz categories in the bulk export report.
- Fixed overly precise decimals in the
Earned Pointscolumn in theQuiz Reportsblock. - Fixed the incorrect text domains in various files to improve translation support.
Quiz Reportsblock now supports standalone quizzes (quizzes not linked to any course).- Removed the dependency of some blocks on the Total Revenue block. They can now work without it being on the page.
- Resolved an issue where the "Daily Enrollments" block would not respect the chosen time period filters.
- Resolved various block dependency issues, allowing for more customizable reporting dashboard pages.
Tweaks
- Switched to 200 API response codes instead of 500 where it was used incorrectly.
- The "Daily Enrollments" Block now returns Course Enrollment data instead of User Registration data.
- The "Total Learners" Block now returns a count of unique learners who have enrolled into one or more courses within the chosen time period.
Fixes
- Resolved an issue where any text after an ampersand (&) was skipped/removed from emails.
- Resolved an issue where disabling the delete team icon did not remove it from the Groups Plus frontend dashboard.
- Resolved an issue where the course time spent functionality could not count the time spent in the course child steps.
- Resolved an issue where the team members' view showed incorrect course steps when a course uses shared steps.
Tweaks
- Updated templates:
src/resources/templates/team-member/email-team-member.php,src/resources/templates/team-member/lesson-listing.php.
Fixes
- Resolved an issue where the "Result messages" list item text would output HTML tags instead of stripping them out.
- Resolved an issue when creating or editing a Course using the Frontend Editor with LearnDash LMS v5.0.0 enabled where the "Course points - Required for access" and the "Course points - Awarded on completion" values would be invalid if not set.
- Resolved an issue where Administrators could not remove any Groups from a Course and Instructors could not remove all Groups from a Course when using the Frontend Course Editor.
- Resolved an issue where all Users could not be removed from a Course when using the Frontend Course Editor.
- Resolved an issue where an administrator couldn't submit a comment on an assignment from the instructor dashboard.
- Resolved an issue where course prerequisites and course points could not be properly enabled in the frontend course builder.
- Resolved an issue where multiple updates to Enrollment-based Quiz Release Schedule via the Frontend Quiz Editor could clears the field.
- Resolved an issue where the "Custom Field Name" field would lose focus after each character input.
- Resolved an issue where the "Custom Fields" toggle switch value was not saved in the database or output correctly on the frontend quiz builder.
- Resolved an issue where the "Result messages" toggle setting value couldn't be stored in database.
- Resolved an issue where the Groups custom pagination settings were not persisted in the database.
- Resolved an issue where the
ldlms/v2/sfwd-courses/{id}/groupsendpoint would be called twice whenever it was called if the logged in user was an Instructor.
Security
- Improved security around assignment and essay REST API endpoints.
Tweaks
- Updated the frontend quiz builder to accommodate the LearnDash Core REST API v2 changes.
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.