Skip to main content
Early accessv0.1.0 · WordPress 6.9+ · PHP 8.1+

Fennec Learn docs

Setup, then the developer reference. Early-access build: names and details can still change before 1.0.

Getting started

Fennec Learn isn't published on WordPress.org yet. Early-access sign-ups get the plugin zip by email when it's ready. Join early access

  1. Install and activate

    Upload the plugin under Plugins → Add New (WordPress.org listing coming at launch) and activate it. WordPress 6.9+ and PHP 8.1+.

  2. Write a course

    Go to Fennec Learn → Add New Course and design the course page with blocks.

  3. Build the curriculum

    Click “Open course builder” in the sidebar to add sections, lessons, drip days and quizzes, and choose who can take the course.

  4. Add a student dashboard

    Add the Student Dashboard block to a page such as “My Courses”, then select that page under Fennec Learn → Settings.

  5. Optional: sell access with Members

    With Fennec Members active, set the course to Restricted and choose the levels that unlock it.

Blocks and shortcodes

  • Student dashboard: the Student Dashboard block or [fennec_learn_dashboard].
  • Course outline: the Course Outline block or [fennec_learn_course_outline]. Course pages append their outline automatically unless you turn it off with fennec_learn_auto_outline.

Certificates

Every certificate has a unique code and a public verification link on your own site, like https://example.com/?fennec_certificate=ABCD-1234-EF56-7890. Anyone with the link sees the student's name, the course and the completion date. Verification pages are marked noindex. Customize what's shown with fennec_learn_certificate_data.

Access and Fennec Members

Courses are open (any logged-in user), free (with registration) or restricted. Restricted courses rely on the fennec_learn_user_can_access_course filter. When Fennec Members is active, Learn's built-in integration uses it to grant access by membership level. Any other plugin can grant access the same way.

Developer hooks

Extensions, including the Pro add-on, use only these public hooks. Data an inactive extension wrote is kept when an item is re-saved.

Fennec Learn hooks
HookTypePurpose
fennec_learn_capabilityfilterCapability for reports, enrollments and settings (default manage_options).
fennec_learn_user_can_access_coursefilterGrant access to a course (restricted courses rely on this).
fennec_learn_access_level_optionsfilterLevel ID → label choices shown in the course builder.
fennec_learn_restricted_messagefilterMessage for logged-in visitors without access.
fennec_learn_auto_outlinefilterWhether a course page appends its outline automatically.
fennec_learn_certificate_datafilterStudent, course, date, site, code and URL shown on a certificate.
fennec_learn_expose_students_to_mcpfilterMake get-student-progress agent-visible (default false).
fennec_learn_course_slugfilterRewrite slug for courses (default “courses”). A matching lesson filter exists.
fennec_learn_certificate_footeractionExtra certificate content such as a signature or logo.
fennec_learn_builder_savedactionAfter the course builder saved (course ID, raw POST).
fennec_learn_loadedactionFennec Learn has loaded.

Suite events

Fired on fennec_event and on fennec_event/<name> with the shared envelope (id, event, plugin, occurred_at, data, site).

  • fennec-learn/course-enrolled
  • fennec-learn/course-unenrolled
  • fennec-learn/lesson-completed
  • fennec-learn/quiz-passed
  • fennec-learn/quiz-failed
  • fennec-learn/course-completed

Abilities

  • fennec-learn/list-coursesagent-visible

    List courses (read-only).

  • fennec-learn/get-course-outlineagent-visible

    A course’s sections and lessons (read-only).

  • fennec-learn/get-student-progresshidden by default

    A student’s progress. Personal data, hidden from agents unless you opt in.

Data and uninstall

Deactivating never deletes anything. Uninstalling keeps all data unless the fennec_learn_delete_data_on_uninstall option is set first (there's a checkbox for it on the plugin's Settings screen). Requires WordPress 6.9+ and PHP 8.1+.