Contributors: pexelle
Donate link: https://pexelle.com
Tags: learndash, certificate, qr code, pexelle, share
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 1.2.6
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Connect LearnDash with Pexelle via QR codes. Share, verify, and export certificates with secure JSON/PDF handoff.
Pexelle for LearnDash provides a modern bridge between LearnDash and Pexelle using secure QR-based handoff.
It enables sharing and verifying certificates or exporting clean JSON/PDF for external integrations.
- 🔗 Seamless integration with LearnDash courses
- 📱 QR code login & sharing (device handoff support)
- 🎓 Certificate transfer to Pexelle infrastructure
- 🔒 Secure one-time login flow with approval system
This plugin is ideal for educators and institutions who want certificate verification to be modern, secure, and easy to share.
- Upload the plugin files to the
/wp-content/plugins/pexelle-learndash
directory, or install directly from the WordPress plugin repository. - Activate the plugin through the Plugins screen in WordPress.
- Navigate to your LearnDash courses and configure QR sharing options.
- Done! Certificates can now be scanned and shared with Pexelle.
Yes. You must have LearnDash LMS installed and active.
Yes. The QR codes generate a short-lived, one-time token and require approval from the user’s main device before login is completed.
Yes. The plugin includes frontend CSS classes (psl-modal
, psl-btn
, etc.) that you can override in your theme or child theme.
Currently tested on single-site WordPress. Multisite support is planned.
- Example QR modal for certificate sharing
- Device handoff waiting screen
- Certificate transfer confirmation
- Sanitized all
$_GET['course_id']
lookups withabsint( wp_unslash() )
to resolve PHPCS security warnings. - Removed remaining usage of
suppress_filters
in WP_Query arguments (not allowed in WordPress.org standards). - Added targeted
phpcs:ignore
comments for LearnDash-requiredmeta_query
usage, with explanations. - Optimized fallback queries with
fields => 'ids'
, disabled caching, andno_found_rows
to minimize load. - Finalized short description under 150 characters for WordPress.org parser compliance.
- General compliance hardening: passed Plugin Check and WordPress.org PHPCS scans without blocking errors.
- Sanitized all
$_GET
and$_POST
inputs withwp_unslash()
+sanitize_text_field()
/absint()
for strict security compliance. - Removed
suppress_filters => true
from WP_Query calls to meet WordPress.org and VIP coding standards. - Optimized query arguments (
fields => ids
,no_found_rows
,update_post_meta_cache
disabled) for performance. - Shortened plugin short description to be under 150 characters.
- Added inline PHPCS ignore comments for unavoidable
meta_query
usage (LearnDash dependency). - General code cleanup and compliance improvements for plugin repository review.
- Added full nonce verification and wp_unslash() handling for all AJAX and GET/POST inputs.
- Secured Magic Login flow with bridge nonce to prevent CSRF-style misuse.
- Updated frontend JS (
psl-frontend.js
) to include and sendajaxNonce
with AJAX requests. - Optimized database queries with
fields => ids
, disabled meta/term cache for faster response. - Improved code compliance with WordPress Plugin Check (PHPCS).
- Maintenance release — focused on passing automated + manual plugin review checks.
- Aligned Text Domain with plugin slug:
pexelle-for-learndash
. - Removed discouraged
load_plugin_textdomain()
(WP ≥ 4.6 auto-loads translations). - Ensured
/languages/
directory exists (POT scaffold ready). - Updated all i18n calls to the new text domain.
- Maintenance release to pass automated plugin checks.
- Added secure token bridge for JSON/PDF certificate handoff.
- Improved frontend modal styling.
- Added countdown timer to waiting page.
- Fixed minor LearnDash course ID parsing bug.
- Updated translations.
- Initial public release with QR-based certificate sharing.
Important security and UX improvements. Please update immediately.