LearnDash banner

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

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

The add-on supports older (2.5) and newer (2.6+) versions of LearnDash.

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



v2.6 info

As of the 22nd of February, the add-on supports both major versions of LearnDash: 2.5 and 2.6. The newer version has weird[er] quiz and question data storage (custom post type and extra SQL table), which the add-on handles transparently.

If the quizzes on the child blog are missing their questions, open the quiz on the parent blog for editing. This will make LearnDash automatically create the question custom fields required for the questions to be broadcasted together with the quiz.

Course broadcast order

Due to the way LearnDash components reference each other, if you want to broadcast the whole post manually, 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 via components 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.

If the above is too complicated, the above can be accomplished using the course broadcast tool in the menu.

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.


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.



Tested with

Version 2.5, v2.6.

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?

  3. Hi Team,

    I have approximately 1600 quiz questions across 40 exams that I need to upload to Learndash. The questions are in a csv file.

    I have tried a couple of plugins, but, a terrible result would be an understatement.

    If this something you may be able to help with?

    Thanks, looking forward to hearing from you.


    1. That sounds like something that needs to be automated. Could you e-mail me the csv file so I can see what can be done about it?

    2. Thanks Ed,

      I’ll organise the file and send it through, thanks for the prompt reply!

  4. The courses, lessons, and topics are not liking correctly when trying to broadcast to a site. Could you please detail the best way to fully broadcast an entire course?

    1. I’m developing a new way to broadcast the whole course at once using a special tool. If you e-mail me I can send you the beta version of the LD add-on to test.

  5. Is there a way for the Course Access List to be updated with the broadcast?

    I need a user to purchase a course on the main site and than have access to the course on the sub domain.

    1. The course access list is stored in the custom field of the course. So what needs to happen is that the course needs to be rebroadcast. Exactly how this happens depends on which e-commerce system you’re using and what actions we can hook into. The Broadcast API will come in handy then, specifically the update_children() function. If you need any help with the code, just e-mail me and we can discuss the details.

  6. Im broadcasting a course from my subsite to my main site where its connected to my e-commerce product. However after purchasing from my mainsite, when i check the user account from my subdomain the course is not connected but on my main site the user and the course purchased is connected. Is there a way i can pass the course purchased on my subsite?

    1. I’m not familiar with any WooCommerce-Learndash connections. Is this a standard feature of LD? At any right, I think you’ll need a code snippet to somehow connect the purchases. Could you contact me via e-mail so you can show me the details of your setup?

    2. Im thinking ill just extract the order details and get the value of the course id and the user id. However is there a function i can use to get the parent id of the broadcasted post?

  7. Hi there,

    Can the plugin be used for copying courses/ quizzes from one site to another?


    1. Yes! I’ve added two new screenshots showing the course broadcast tool.

Leave a Reply
