07. Best Practices
Guidance for using LearnDash Materials Extended well, drawn from how the plugin is designed to be operated.
Upload files to the Media Library and link them from there
Media Library items give you the file-type icon, the choice between downloading and the attachment page, and one place to replace a file later. Reserve External URL for resources you don't host, such as reference sites or shared documents.
Name items for the learner, not the file
The Title is what learners read. "Week 1 slides (PDF)" tells them what they get and what to expect when they click; w1_slides_final_v3.pdf does not. Put the format in the title when it matters, since the icon alone is easy to miss.
Choose Download for files, Attachment page rarely
Download links straight to the file, opens or saves it depending on the browser, and gives the item its type-specific icon. Attachment page sends learners to a WordPress page that shows the file, which is only useful when that page carries context of its own; it also shows the generic document icon because the link has no file extension.
Keep the shortcode in LearnDash's Materials field
The Insert shortcode button puts [learndash_materials_extended] where LearnDash expects materials, so learners find them in the familiar Materials tab. Placing the shortcode in the lesson content as well is fine for a "Downloads" section, but treat the tab as the home.
Set the style once, from a preset
Styling is site-wide, so pick a preset that suits your theme, adjust colours, and leave it. If you later switch between links and buttons, load the preset you want rather than flipping List type by hand, so the button colours are set as a group.
Check the list from a learner account
Administrators may see course content that learners cannot. Keep a test learner enrolled in a test course and open the Materials tab from that account after adding files, especially for lessons that are dripped or otherwise restricted, since the tab follows LearnDash's own visibility rules.
Mind third-party font loading
Font family loads the chosen Google Font from Google's servers in the visitor's browser. If your privacy policy avoids third-party requests, keep it on Default so the list inherits your theme's font.