LearnDash banner

This add-on for Broadcast adds supprt for the following LearnDash LMS plugin components:

  • Certificates
  • Courses
  • Groups
  • Lessons
  • Question categories
  • Quizzes
  • Topics

The add-on also allows for questions and answers to be mass-updated and automatically broadcasted afterwards. See notes.



Due to the way LearnDash components reference each other, you will need to broadcast and rebroadcast things so that they can find each other on the child blog. The best way to broadcast a course is:

  1. The prerequisite course, if any.
  2. The course itself.
  3. The certificate.
  4. Lessons.
  5. Topics.
  6. Quizzes.
  7. Groups.
  8. The course again.

Upon activation, the add-on will automatically raise Broadcast’s save_post action priority to a value higher than LearnDash’s (2000).

Enrollments to courses on child blogs are retained when rebroadcasting the parent course – thus preventing the users on the child blog from being unenrolled from the course.

Syncing course completion between broadcasted courses is not possible due to how LearnDash is built: it stores the completion data in the user’s meta data, using the course ID as the identifier, which will conflict between blogs. LearnDash’s network-unaware way of handling course completion data will cause conflicts with things like certificate generation if users have access to courses on more than one blog.

For the same reason as the above, groups cannot be synced between blogs either.

Question Search & Replace

The add-on allows for text in questions and answers to be replaced. The process works as follows:

  • In the text to replace tab you specify what text to replace. The select box allows you to replace the text in the questions and / or the answers.
  • If you only which specific questions to be replaced and not, say, all questions that contain the text “well”, fill in this tab.
  • If you have this quiz broadcasted to other blogs, the child blogs can be automatically updated after the text is replaced.
  • The top button only searches for the text. This can be a small preview of your changes, so you can check whether the correct questions and answers are modified.
  • The buttom button does the actual replacing and optional rebroadcasting.

Blacklist / whitelist / protect course settings

If you have different course settings (prices, materials, etc) on each blog that you would like protected, put the name of the setting into the respective Broadcast custom field list, add this snippet that enables processing of arrays in custom fields, and then broadcast the course again.

For example, if your course has different course materials on each blog, and you don’t want that setting overwritten, add sfwd-courses_course_materials into the custom field protect list and enable the above snippet.

Tested with

Version 2.3.3.

Where to buy

This add-on is a part of the following packs:


  1. Hi There,
    Would this also work for WPLMS? That is a popular e-learning platform as well, with similar buildup. It would be great if that would be possible with this integration as well, or otherwise if there comes an integration with it!

    Thanks in advance,

    1. Have never heard about it, although I can usually build Broadcast support for most plugins. Please contact me via e-mail so we can have a look at the WPLMS plugin together.

  2. Hi there, could you clarify the following:

    a) The last statement under “Notes” above (also pasted here==>): “Syncing course completion between broadcasted courses is not possible due to how LearnDash is built: it stores the completion data in the user’s meta data, using the course ID as the identifier, which will conflict between blogs.”

    b) The implications for LearnDash registering course progression between 2 broadcasted courses whereby 1 broadcasted course is a pre-requisite for another broadcasted course?

    c) What are the implications for LearnDash payment gateways? – are course pages with pages with payment buttons for a given course broadcasted/visible in a given subdomain be enabled to route payments to the central/main site’s payment gateway .. and thus avoid a need to setup multiple payment gateways in each subdomain for each course that’s broadcasted? .. or how does this aspect work?

    1. a) If the user completes course A on blog 1, it is impossible to mark course A on blogs 2 and 3 as marked also, due to how LD is programmed.

      b) Due to A, course completion is local. So all prerequisites have to be completed on the same blog, not on different blogs.

      c) I’d say no to the routing. Generally, since none of the LMS plugins available care about WordPress Networks, just imagine that broadcasting courses or quizzes or anything only copies the data between blogs. It does not override any completion management, payments, certificates, etc.

      After broadcasting, you just have the same courses, but on another blog in the network.

      Looking at my code, none of the LMS add-ons Broadcast has (Sensei, WPLMS, Learndash) have any completion syncing support, either due to not being supported in the LMS (LearnDash) or not being requested (the other two).

      Does my answer clarify things any?

Leave a Reply

Your email address will not be published. Required fields are marked *