⚠️ Feature request: Built-in Schema.org / Google Rich Results support for Courses
Hi friends,
First, thanks for the great work on Fluent Community.
I’d love to suggest a feature that would really help SEO for course-based sites: native Schema.org JSON-LD for courses, lessons, and member spaces, compliant with Google Rich Results.
Test : https://search.google.com/test/rich-results
(I had already raised this observation and thought it had been addressed in the latest update.)
Why
Right now, Fluent Community doesn’t appear to output JSON-LD for courses by default. I added custom code to inject and validate structured data, and it works — but native support would be much cleaner and more reliable for everyone.
What would help
-
Course pages (
@type: Course)-
Required fields:
-
name,description,url -
provider→{ "@type": "Organization", "name": "...", "url": "..." } -
hasCourseInstance→{ "@type": "CourseInstance", "courseMode": "online", "url": "...", "courseWorkload": "P12H" }- Note:
courseWorkloadorcourseScheduleis required by Google;courseWorkloadmust be ISO 8601 duration (e.g.,P12H,PT1H30M).
- Note:
-
-
offers(Google expects it even for free courses):- Paid example:
{ "@type": "Offer", "price": 39, "priceCurrency": "EUR", "availability": "https://schema.org/InStock", "priceValidUntil": "YYYY-MM-DD", ... } - Free example:
{ "@type": "Offer", "price": 0, "priceCurrency": "EUR", "availability": "https://schema.org/InStock" }
- Paid example:
-
isAccessibleForFreeshould be a boolean (true/false), not a string/URL.
-
-
Lesson/session pages
- Use
@type: WebPage(unless you model lessons separately), inheritisAccessibleForFreefrom the parent course or expose a per-lesson override.
- Use
-
Member spaces (
/space/.../home)- Use
@type: WebPagewithisAccessibleForFree: falseby default (configurable).
- Use
Admin UX
- Add fields in the course editor: price, currency, promo price/validUntil, workload (duration), mode, start/end dates (optional).
- Allow a course to be marked Free vs Paid; generate the right
offersautomatically (price0if free). - Provide a toggle to enable/disable JSON-LD globally and per course.
- Output JSON-LD server-side (in
<head>) so Google can read it without relying on JS rendering. - Use filters/actions so advanced users can modify the payload.
Bonus (to avoid conflicts)
-
If third-party SEO plugins also output
Coursemarkup, consider:- a setting to disable Fluent Community’s JSON-LD, or
- a filter to merge/extend existing JSON-LD cleanly.
I’m happy to share working examples or help test. This would make Fluent Community more SEO-friendly out of the box and help sites get consistent “Course” rich results in Google.
Thanks again for considering it!
David & ChatGPT5 😉
\= 1.7.72 (Date: July 08, 2025) = We have added the schema for Public and Private Courses.
I thought it was working, but it isn’t.
Shahjahan Jewel
provider, hasCourseInstance, offers
Google scan 👇
We also need to make Private courses searchable on Google. There is no option to offer paid spaces and grow your community through SEO.
VOTE: https://community.wpmanageninja.com/fluentcommunity-roadmp/#/idea/989/
Unfortunately for me, there’s nothing there yet... so I have to start my ideas with self-solutions.