A complete WordPress LMS plugin to create any eLearning website easily.
Category Scores
Top Issues by Category
maintainability3,441
security302
Issues Details
3,797 issues found in latest scan
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$_checked".
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Use placeholders and $wpdb->prepare(); found interpolated variable $course_ids at \t\t\tWHERE topic.post_parent IN ($course_ids)"
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "active_plugins".
Unescaped parameter $ancestor_ids used in $wpdb->get_col()\n$ancestor_ids assigned unsafely at line 8480.
Unescaped parameter $array used in $wpdb->get_results()\n$array assigned unsafely at line 408.
Detected usage of meta_key, possible slow query.
Processing form data without nonce verification.
Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "__tutor_generate_categories_checkbox".
Detected usage of meta_value, possible slow query.
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"Cannot resolve: {$abstract}"'.
date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.
error_log() found. Debug code should not normally be used in production.
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$attr_string'.
Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "PAYMENT_HUB_ROOT".
Detected usage of tax_query, possible slow query.
Resource version not set in call to wp_enqueue_style(). This means new versions of the style may not always be loaded due to browser caching.
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$blocks['action']".
Function "str_contains()" requires WordPress 5.9.0, but your plugin minimum supported version is WordPress 5.3.0.
Replacement variables found, but no valid placeholders found in the query.
Detected usage of a non-sanitized input variable: $_FILES['data']
wp_reset_query() is discouraged. Use wp_reset_postdata() instead.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$_checked". | 2,327 |
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 329 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 312 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 261 |
| WordPress.DB.PreparedSQL.InterpolatedNotPrepared | WARNING | Use placeholders and $wpdb->prepare(); found interpolated variable $course_ids at \t\t\tWHERE topic.post_parent IN ($course_ids)" | 121 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "active_plugins". | 51 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | ERROR | Unescaped parameter $ancestor_ids used in $wpdb->get_col()\n$ancestor_ids assigned unsafely at line 8480. | 43 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | WARNING | Unescaped parameter $array used in $wpdb->get_results()\n$array assigned unsafely at line 408. | 42 |
| WordPress.DB.SlowDBQuery.slow_db_query_meta_key | WARNING | Detected usage of meta_key, possible slow query. | 34 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 34 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | WARNING | Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "__tutor_generate_categories_checkbox". | 29 |
| WordPress.DB.SlowDBQuery.slow_db_query_meta_value | WARNING | Detected usage of meta_value, possible slow query. | 23 |
| WordPress.Security.EscapeOutput.ExceptionNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"Cannot resolve: {$abstract}"'. | 22 |
| WordPress.DateTime.RestrictedFunctions.date_date | ERROR | date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead. | 17 |
| WordPress.DB.PreparedSQL.NotPrepared | ERROR | Use placeholders and $wpdb->prepare(); found $post_type | 15 |
| WordPress.PHP.DevelopmentFunctions.error_log_error_log | WARNING | error_log() found. Debug code should not normally be used in production. | 14 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$attr_string'. | 13 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound | WARNING | Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "PAYMENT_HUB_ROOT". | 9 |
| WordPress.DB.SlowDBQuery.slow_db_query_tax_query | WARNING | Detected usage of tax_query, possible slow query. | 8 |
| WordPress.WP.EnqueuedResourceParameters.MissingVersion | WARNING | Resource version not set in call to wp_enqueue_style(). This means new versions of the style may not always be loaded due to browser caching. | 8 |
| WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$blocks['action']". | 7 |
| wp_function_not_compatible_with_requires_wp | ERROR | Function "str_contains()" requires WordPress 5.9.0, but your plugin minimum supported version is WordPress 5.3.0. | 7 |
| WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare | WARNING | Replacement variables found, but no valid placeholders found in the query. | 6 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_FILES['data'] | 6 |
| WordPress.WP.DiscouragedFunctions.wp_reset_query_wp_reset_query | WARNING | wp_reset_query() is discouraged. Use wp_reset_postdata() instead. | 5 |
Latest Snapshot
Findings
3,797
Errors
395
Warnings
3,402
Score History
First score snapshot
First scan completed
v3.9.13 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
v3.9.13
23
Latest
- Findings
- 3,797
- Errors
- 395
- Warnings
- 3,402
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Latest | 23 | 3,797 | 395 | 3,402 | v3.9.13 | 2.0.0 | 2026.06-mvp-static-v2 |