Xtreme Courses

Changelog

2.2.0

  • New: “Xtreme Courses — Overview” dashboard widget — shows published course & lesson counts, quick actions (Create Course, All Courses, Settings), a Popular Features grid, a Pro upsell, and Docs / Support / Blog / Buy links.

2.1.9

  • WordPress.org reviewer feedback round (follow-up to the 2.1.8 submission) — addresses the two findings from the latest manual review.
  • REST permissions: the course publish endpoint (POST /xtreme-courses/v1/courses/{id}/publish) now uses a dedicated publish_course_permissions_check() gate. Publishing previously shared the editing gate (edit_post ownership only); it now additionally requires the publish-specific primitive capability for the course post type (publish_xtrc_courses, resolved from the CPT capability_type). An author who can edit a draft but lacks the publish capability is denied — the permission check now matches the strength of the action. includes/REST/class-courses-controller.php.
  • Certificate generator: the in-document PDF stylesheet block is now composed from a constant element name rather than a literal <style> element, with an expanded comment clarifying that this CSS is parsed by the bundled PDF engine (never streamed to the browser) so wp_enqueue_style() does not apply. Every browser-facing script and style in the plugin is registered/enqueued via wp_register_* / wp_enqueue_*; this block is PDF-document markup, not front-end output. Output is byte-identical. includes/Certificate/class-certificate-generator.php.
  • readme.txt: the == Changelog == section is trimmed below WordPress.org’s 5000-character limit (older per-version entries rolled up; full history retained in CHANGELOG.md).
  • No database changes, no schema changes. Safe to upgrade.

2.1.8

  • WordPress.org reviewer feedback round: updated the bundled Chart.js to v4.5.1 (MIT) with a matching filemtime()-busted enqueue; the optional mPDF autoloader now loads only from the plugin’s own vendor/ (the non-portable ABSPATH fallback was removed); lowered the top-level admin menu position from 2 to 58; hardened the drip-override nonces to fail closed and moved _wpnonce verification to the top of the set/remove handlers; bound the per-student override IN () lists via %d in wpdb::prepare(); sanitized the certificate-layout JSON ($_POST[‘xtrc_cert_layout’]) and $_SERVER[‘SCRIPT_NAME’] at the boundary; assembled the certificate PDF HTML as a returned string and escaped the Courses-list status row with wp_kses_post(); and removed the deprecated 2-character XC_* constant aliases (the XTREMECOURSES_* constants are now the only names). No database or schema changes.

2.1.x (2.1.0 – 2.1.7)

  • Admin UX and review-round fixes across the 2.1 line: first-run setup wizard, server-rendered Courses list page and dashboard refresh, plugin-row action/meta links, React builder save-error fixes (linked-quiz validation, type-aware lesson PATCH, full-text error banner, non-blocking quiz-on-Update warning), and successive Plugin Check / PHPCS hardening passes.

2.0.x

  • WordPress.org review and Plugin Check rounds: Chart.js bundled locally (no CDN), XC_* constants renamed to XTREMECOURSES_*, folder/slug/namespace normalized to xtreme-courses, certificate PDF CSS moved to a bundled file, plus numerous escaping, prefix, nonce, and $wpdb-suppression fixes.

1.x

  • Initial builds through 1.9.0: React course builder, lesson player, WooCommerce enrollment, drip scheduling, quiz engine, PDF certificates, gamification, live Zoom/Meet lessons, reviews, and analytics.

For the complete release notes for every individual version, see CHANGELOG.md in the source repository.

Plugin Website
Visit website

Author
Jacob Swartz
Version:
2.2.0
Last Updated
July 1, 2026
Requires
WordPress 6.5
Tested Up To
WordPress 7.0
Requires PHP
8.2

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.