Enhanced Course Grid

Overview

The Enhanced Course Grid displays your courses in a clean, customizable grid — with featured images, optional descriptions, progress bars, prices, and Start/Resume buttons. It’s built primarily for signed-in learners who want to see what they’re enrolled in and what’s available next.

By default the grid renders four columns with expandable rows and orders courses in a sensible learner-first sequence: enrolled courses (sorted by completion percentage) first, then non-enrolled courses, then anything tagged “coming soon.”

What the grid can show:

  • Featured images displayed at equal sizes
  • Optional short descriptions beneath course names (HTML is supported in the Short Description field)
  • Progress bars for enrolled learners
  • A Start or Resume button per course
  • A price or price banner in the upper-left corner
  • “Coming Soon” status, driven by a standard WordPress tag (not a LearnDash tag)

Common uses include a member dashboard of enrolled courses sorted by progress, a public catalog of available courses, and category-filtered grids for specific topics or programs.

Important: If you use HTML in the Short Description field, disable the LearnDash Course Grid plugin — it strips HTML out of that field.

Where to set the Short Description (Toolkit Pro v4.4.1+): The course Short Description field is on the course edit screen, under a dedicated Uncanny Toolkit tab in the LearnDash settings header. v4.4.1 added this tab so the field stays easy to find under WordPress 7.0’s block editor, which otherwise collapses classic metaboxes out of view.

Configure It

Add the grid with the Enhanced Course Grid block or the [uo_courses] shortcode, then shape it around these decisions:

  • Which courses to include — Use enrolled_only="yes" for a personal dashboard, or not_enrolled="yes" for an “available courses” catalog. Filter by topic with category (WordPress) or ld_category (LearnDash course category); both accept comma-separated slugs. When you pass multiple categories, taxonomy_relation decides whether a course must match AND (all) or OR (any, the default).
  • Whether to give learners a filter dropdown — Turn on categoryselector (WordPress) or course_categoryselector (LearnDash). Empty categories are hidden automatically. 
  • Layout — Set cols (1–5; default 4). Use limit to control how many courses appear before the View More button (all shows everything and removes the button). Hide that button with hide_view_more, or point it at a full catalog page with more="URL".
  • What to show on each card — Toggle show_image, price, hide_description, hide_progress, hide_credits, hide_title, and link_to_course. We recommend hide_progress="yes" on sites with many courses for better performance.
  • Action buttons — Set start_course_button="show" to show a Start button for enrolled learners at 0% progress, and resume_course_button="show" to show a Resume button for learners with progress (this requires the Resume module enabled).
  • Sort order — The default uses default_sorting by status (course-progress,enrolled,not-enrolled,coming-soon,completed). To sort alphabetically or by date instead, set orderby (title, date, menu_order) plus order (asc/desc) and add ignore_default_sorting="yes" so your order takes precedence.
  • Colors and labels — Restyle with border_hover, view_more_color, view_more_hover, view_more_text_color, and relabel buttons with view_more_text / view_less_text.

Important: default_sorting doubles as a filter. Any status you leave out of your custom default_sorting list is excluded from the grid entirely. For example, omitting not-enrolled hides non-enrolled courses.

Example

A learner dashboard showing only enrolled courses, no prices, sorted by progress then completion:

[uo_courses enrolled_only="yes" price="no" default_sorting="course-progress,enrolled,completed"]

Shortcode reference

[uo_courses]

AttributeWhat it doesValuesDefault
categoryShow courses in one or more WordPress categoriesall or slug(s), comma-separatedall
ld_categoryShow courses in one or more LearnDash course categoriesall or slug(s), comma-separatedall
categoryselectorShow a WordPress-category filter dropdown (empty categories hidden)show, hidehide
course_categoryselectorShow a LearnDash-category filter dropdown (empty categories hidden)show, hidehide
taxonomy_relationMatch ALL or ANY of the supplied categoriesAND, OROR
enrolled_onlyShow only enrolled coursesyes, nono
not_enrolledShow only non-enrolled coursesyes, nono
colsColumns per row154
limitCourses shown before the View More button (all removes it)all or an integer4
hide_view_moreHide the View More buttonyes, nono
hide_descriptionHide the course descriptionyes, nono
hide_progressHide the progress bar (improves performance)yes, nono
hide_creditsHide the assigned credit valueyes, nono
hide_titleHide the course titleyes, nono
moreSend View More to a URL instead of expanding the listA URL(none)
show_imageShow the featured image (min. recommended 624 × 468 px)yes, noyes
priceShow the price / price banner in the upper leftyes, noyes
link_to_courseLink grid items to their course pagesyes, noyes
default_sortingSort by status; omitted statuses are excludedcourse-progress,enrolled,not-enrolled,coming-soon,completed (any order)course-progress,enrolled,not-enrolled,coming-soon,completed
orderbyCourse ordering methodtitle, date, menu_ordertitle
orderSort direction (based on orderby)asc, descasc
ignore_default_sortingLet orderby take precedence over default_sortingyes, nono
start_course_buttonShow a Start button for enrolled learners at 0%show, hidehide
resume_course_buttonShow a Resume button for learners with progress (needs Resume module)show, hidehide
border_hoverBorder color on grid-item hoverA color value(none)
view_more_colorView More button fill colorA color value(none)
view_more_hoverView More button fill color on hoverA color value(none)
view_more_text_colorView More button text colorA color value(none)
view_more_textView More button labelCustom text(none)
view_less_textView Less button labelCustom text(none)

Customization

CSS: Copy /wp-content/plugins/uncanny-toolkit-pro/src/assets/legacy/frontend/css/course-grid-view.css to /wp-content/themes/your-theme/uncanny-toolkit-pro/css/course-grid-view.css and edit the copy.

Template override (v3.1+): Copy wp-content/plugins/uncanny-toolkit-pro/src/templates/course-grid.php to wp-content/themes/yourtheme/uncanny-toolkit/course-grid.php.

Developer filters for ribbon text:

  • apply_filters( ‘uo_course_grid_ribbon_text’, $output, $course->ID ) 
  • apply_filters( ‘uo_course_grid_ribbon_price’, $course_price, $course->ID )

Important: Don’t edit CSS or template files inside the plugin directly — they’re overwritten on upgrade. Always work from the theme override.

Note — other caveats:

  • WooCommerce: The grid can’t integrate with WooCommerce unless you make significant changes to the WooCommerce store-page template.
  • Featured images: WordPress crops images to a 1.33:1 ratio; upload at least 624 × 468 px.
  • Closed courses: A course with no price listed displays as “Free,” which may be inaccurate.
  • Resume button: Only appears for learners with progress recorded after plugin version 2.5 was installed.

27 thoughts on “Enhanced Course Grid”

  1. Hello,
    I apparently have a compatibility problem with woocommerce.
    I used the shortcode [uo_courses] and everything works … until I ask woocommerce to use this page as a shop page. At this moment the presentation changes. Here are screenshots to better understand.
    Before: https://drive.google.com/open?id=1uD8oaHcaGa06DEe2OQjl1sLYfo5x5VXE
    After: https://drive.google.com/open?id=1Zemq-JEJ1K1a71FzREESXYjkPezJ3aT_
    Thanks a lot for your help ! It makes me crazy !!

    1. This cannot work unless you make significant changes to the WooCommerce template for the store page. When you set this page in WooCommerce settings, Woo will take it over and modify things about it. We cannot recommend using our shortcodes if you’re also using it as a Woo store page.

    1. Sorry Frank, very briefly (for about 3 hours) there was a release that showed the drop-down selection by default. That shouldn’t have happened, and you can hide it by adding this attribute to your course grid shortcode: categoryselector=”hide”. If you’re still having issues make sure to send us a support ticket (we don’t monitor the Knowledge Base as much).

  2. Hi, I love the layout. But is there any way to have the drop-down (courseselector) NOT show empty categories? We utilize categories across our page that have nothing to do with courses and the drop-down always shows all.
    The LD “out of the box” dropdown does not show empty ones, so as long as no courses have a given category it wouldn’t show up… Any chance there is a way to do that with the UO courseselector??

    Thanks!

    1. Hi Helma, we’re going to hide empty categories from the dropdown in the next release. Thanks for your feedback!

      1. Thanks Ken! And sorry for the duplication through a ticket – wasn’t sure if my comment here had come through. Looking forward to that next release 😉

  3. Todd Berntson

    I cannot figure out what I am doing wrong. I have the Enhanced Course Grid enabled in my plugins, but when I place the shortcode all I see is:

    [uo_courses]

    Any idea what I may be doing wrong? Other shortcodes (resume course, etc) seem to be working fine).

      1. Hi Ken. Thank you for the followup.

        I was able to figure out the issue. I use Elementor and one of their widgets is a “Shortcode” block. For whatever reason, the Uncanny Owl shortcodes work great if I place them on a page using Elementor’s “Text” block, but they seem to be more problematic when I use Elementor’s “Shortcode” block.

        The Shortcode block seems to work fine for most other shortcodes, e.g., LearnDash, PDF Embedder, etc., but not as well for some of the UO ones. Now I just put them in a text block and they work great.

  4. Björn Granberg

    Hej,
    the css file is not in the directory mentioned above: /wp-content/plugins/uncanny-toolkit-pro/src/assets/frontend/css/course-grid-view.css.
    I believe you need to update the instructions!

    Thanks
    Bjorn

  5. Hello,

    How can I update the progression for all my student when I add a lesson or a topic to a course. So if the progression show 66% because the student see 2 on 3 lessons, and I add an other lesson for have 4 lesson, I want to show the progression at 50% and not at 66% ?

    Thanks

    1. I’m not sure that there is a way to fix progression when you change the course structure. If there is, we unfortunately haven’t seen it. LearnDash might have better guidance for this issue.

  6. Peter Carqueville

    Hi,

    you write that “when uploading a featured image, WordPress will automatically crop it to 1.33:1 aspect ratio. ”

    This seems to be true for the course pages. But [uo_courses] on my site shows the original aspect ratios next to each other, which doesn’t look good,

    Can this be fixed easily?

  7. Marc Mclaughlin

    Hi,

    The course grid is working great for us, so first of all thank you! I was just wondering if it’s possible to individually style different course grids on the same page? We’ve got a few grids, each with a different course category, and it would be great to have different background colours for each grid. Is there a way of assigning a CSS class or ID to each grid to differentiate between them?

    Thanks!

    1. You could try adding a

      around the different grid shortcodes on your page, then targeting them using that class.

  8. Hi,
    I have a “follow-up” question around the drop-down (courseselector) field. Is there a way to NOT show the numbers of courses behind at all?
    Reason I ask is that they pull all of the available courses, but since we are using a membership plugin, it is more confusing than helpful as I might see a (7) behind a category, but when I click on that category, I will only get 1 course that is available to me based on my membership level…
    So not showing any number sounds better than showing a “confusing” number… Any chance something can be added to the shortcode to hide the “course count”?
    Thanks!
    Helma

    1. Unfortunately there’s no way to hide the category count and we don’t plan to add that feature. You could modify the plugin file directly (line 422 of src/classes/show-all-courses.php), but that customization would get wiped out every time you upgrade and we couldn’t provide support for it.

  9. Love this module, it does exactly what I was looking for! Is there a preferred way to set the number of columns to only “2”? At the minimum of 3 columns, the course image is too small for our purposes (we only have one course). I could certainly set .uo-3-col to “width: 50%” and be done with it, but I don’t like the inconsistency (i.e., forcing “uo-3-col” to act as if it’s 2 columns) and would prefer a more elegant solution if there is one. Thanks!
    Daniel

    1. I’m afraid that right now our grid only supports 3 to 5 columns. You could potentially leave it at the default 4 columns and use this:

      body .uo-4-col {
      width:50%;
      }

      There is no way to do it via the shortcode though unless we add explicit support, and right now it’s unfortunately not in our roadmap.

  10. After our latest website update the “Resume” button at the bottom of each column has disappeared. We have ensured that the “resume_course_button” flag is set to “show”. What else would you recommend doing to fix this issue?

    Thanks!

    1. You should definitely open a ticket. This conflict with the LearnDash update has been resolved but we probably won’t push an update until next week. If you open a ticket we can provide the fix in advance.

Leave a Reply

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

Uncanny Toolkit Pro for LearnDash

30 powerful modules for LearnDash professionals. Our most popular plugin!

Scroll to Top