Masteriyo LMS – LMS Course Builder, Quizzes & Certificates

Complete WordPress LMS plugin. Build & sell online courses with quizzes, certificates, and built-in payments. The all-in-one LMS for course creators.

v2.3.0masteriyoUpdated Added 5k+ installs96% rating96% support resolved
23
Score
192
Errors
2,123
Warnings
+0
Change

Category Scores

Security0
Repo100
Performance82
Maintainability0

Issues to Review

Prioritized issue groups from the latest Plugin Check scan

2,315 findings

Maintainability

1,784

15 issue groups

Security

434

9 issue groups

Performance

32

1 issue group

WARNINGMaintainabilityNon-prefixed global variableGlobal variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$TRP_LANGUAGE".521
Category
Maintainability
Occurrences
521
Severity
warning

Sample message

Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$TRP_LANGUAGE".

WARNINGMaintainabilityDirect QueryUse of a direct database call is discouraged.456
Category
Maintainability
Occurrences
456
Severity
warning

Sample message

Use of a direct database call is discouraged.

WARNINGMaintainabilityNo CachingDirect database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().405
Category
Maintainability
Occurrences
405
Severity
warning

Sample message

Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().

WARNINGMaintainabilityDynamic hook nameHook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$action . '_onetime_token_expiration'".103
Category
Maintainability
Occurrences
103
Severity
warning

Sample message

Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$action . '_onetime_token_expiration'".

WARNINGSecurityDatabase parameter is not escapedUnescaped parameter $act_not_in used in $wpdb->get_col()91
Category
Security
Occurrences
91
Severity
warning

Sample message

Unescaped parameter $act_not_in used in $wpdb->get_col()

ERRORSecurityException output is not escapedAll output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"You requested {$requested} items, but there are only {$count} items available."'.85
Category
Security
Occurrences
85
Severity
error

Sample message

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"You requested {$requested} items, but there are only {$count} items available."'.

WARNINGSecurityInput is not sanitizedDetected usage of a non-sanitized input variable: $_COOKIE[$this->cookie]84
Category
Security
Occurrences
84
Severity
warning

Sample message

Detected usage of a non-sanitized input variable: $_COOKIE[$this->cookie]

WARNINGSecurityRequest data is not unslashed$_COOKIE['MasteriyoCoursesViewMode'] not unslashed before sanitization. Use wp_unslash() or similar66
Category
Security
Occurrences
66
Severity
warning

Sample message

$_COOKIE['MasteriyoCoursesViewMode'] not unslashed before sanitization. Use wp_unslash() or similar

WARNINGMaintainabilityNon-prefixed hook nameHook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "action_scheduler_queue_runner_time_limit".63
Category
Maintainability
Occurrences
63
Severity
warning

Sample message

Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "action_scheduler_queue_runner_time_limit".

WARNINGMaintainabilityslow db query meta keyDetected usage of meta_key, possible slow query.60
Category
Maintainability
Occurrences
60
Severity
warning

Sample message

Detected usage of meta_key, possible slow query.

Show 15 more
ERRORSecurityOutput is not escaped51
Category
Security
Occurrences
51
Severity
error

Sample message

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"<div {$this->render_attributes( '_root' )} style='width:100%;' >"'.

WARNINGMaintainabilityslow db query meta value41
Category
Maintainability
Occurrences
41
Severity
warning

Sample message

Detected usage of meta_value, possible slow query.

WARNINGMaintainabilityslow db query meta query39
Category
Maintainability
Occurrences
39
Severity
warning

Sample message

Detected usage of meta_query, possible slow query.

WARNINGPerformancePost Not In exclude32
Category
Performance
Occurrences
32
Severity
warning

Sample message

Using exclusionary parameters, like exclude, in calls to get_posts() should be done with caution, see https://wpvip.com/documentation/performance-improvements-by-removing-usage-of-post__not_in/ for more information.

WARNINGSecurityInput is not validated30
Category
Security
Occurrences
30
Severity
warning

Sample message

Detected usage of a possibly undefined superglobal array index: $_GET[&#039;course_id&#039;]. Check that the array index exists before using it.

WARNINGMaintainabilityNon-prefixed class22
Category
Maintainability
Occurrences
22
Severity
warning

Sample message

Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: &quot;AddStripeIntegrationMethodFlag&quot;.

WARNINGMaintainabilityslow db query tax query19
Category
Maintainability
Occurrences
19
Severity
warning

Sample message

Detected usage of tax_query, possible slow query.

ERRORMaintainabilityunlink unlink17
Category
Maintainability
Occurrences
17
Severity
error

Sample message

unlink() is discouraged. Use wp_delete_file() to delete a file.

WARNINGMaintainabilityNon-prefixed function14
Category
Maintainability
Occurrences
14
Severity
warning

Sample message

Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: &quot;check_required_pages&quot;.

WARNINGSecurityNonce verification recommended12
Category
Security
Occurrences
12
Severity
warning

Sample message

Processing form data without nonce verification.

WARNINGSecurityReplacements Wrong Number9
Category
Security
Occurrences
9
Severity
warning

Sample message

Incorrect number of replacements passed to $wpdb-&gt;prepare(). Found 1 replacement parameters, expected 2.

WARNINGMaintainabilityerror log print r9
Category
Maintainability
Occurrences
9
Severity
warning

Sample message

print_r() found. Debug code should not normally be used in production.

WARNINGMaintainabilityerror log error log8
Category
Maintainability
Occurrences
8
Severity
warning

Sample message

error_log() found. Debug code should not normally be used in production.

WARNINGMaintainabilityMixed line endings7
Category
Maintainability
Occurrences
7
Severity
warning

Sample message

File has mixed line endings; this may cause incorrect results

ERRORSecuritySQL query is not prepared6
Category
Security
Occurrences
6
Severity
error

Sample message

Use placeholders and $wpdb->prepare(); found $prepared_query

External Connections

Potential connections found in static code analysis.

43 domains

Outbound calls

268

External assets

10

Incoming endpoints

21

Notable Domains

masteriyo.com66 · outbound
googleapis.com16 · outbound
json-schema.org10 · outbound
themegrilldemos.com7 · outbound
img.masteriyo.com6 · outbound

Platform / Reference Domains

w3.org96 · platform/reference
github.com2 · platform/reference
gnu.org1 · platform/reference
opensource.org1 · platform/reference

External Asset Domains

docs.masteriyo.com16 · asset + outbound
fonts.googleapis.com9 · asset + outbound
google.com4 · asset + outbound
app.brevo.com2 · asset + outbound
login.brevo.com2 · asset + outbound
onboarding.brevo.com2 · asset + outbound

Incoming Endpoints

wp_ajax_nopriv_{$this->action}public

wp_ajax

/wp-json/masteriyo/pro/v1/certificate-pdf-dataREST

register_rest_route

/wp-json/masteriyo/pro/v1/certificate-pdf-emailREST

register_rest_route

/wp-json/masteriyo/v1/courses/create-from-wc-productREST

register_rest_route

/wp-json/masteriyo/v1/orders/unifiedREST

register_rest_route

/wp-json/masteriyo/v1/orders/wc/(?P<id>\d+)REST

register_rest_route

Admin AJAX endpoints6
wp_ajax_{$this->action}authenticated

wp_ajax

wp_ajax_masteriyo_lemon_squeezy_webhookauthenticated

wp_ajax

wp_ajax_masteriyo_mollie_webhookauthenticated

wp_ajax

wp_ajax_masteriyo_stripe_connectauthenticated

wp_ajax

wp_ajax_masteriyo_stripe_payment_intentauthenticated

wp_ajax

wp_ajax_masteriyo_stripe_webhookauthenticated

wp_ajax

Score History

2 score snapshots

+0
1007550250Jun 21, 2026, 06:58 AM UTC Score 23/100 Plugin v2.2.1 Plugin Check 2.0.0 197 errors, 1,748 warningsJun 23, 2026, 04:44 PM UTC Score 23/100 Plugin v2.3.0 Plugin Check 2.0.0 192 errors, 2,123 warningsJun 21, 2026Jun 23, 2026

v2.3.0

23

Latest

Findings
2,315
Errors
192
Warnings
2,123
Check
2.0.0

v2.2.1

23

Score

Findings
1,945
Errors
197
Warnings
1,748
Check
2.0.0

Relationship Map

Author, categories, issues, domains, and nearby plugins.

37 nodes

Related Plugins