Quiz maker & survey maker for WordPress. Build quizzes, surveys, exams & assessments with scoring, results pages & lead capture — free & easy.
Prioritized issue groups from the latest Plugin Check scan
Maintainability
2,189
14 issue groups
Security
813
10 issue groups
I18n
1
1 issue group
Sample message
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "'qsm_theme_option_' . strtolower( $theme['theme_name'] )".
Sample message
Use of a direct database call is discouraged.
Sample message
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
Sample message
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$QSMQuizList".
Sample message
Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "get_question_type".
Sample message
Use placeholders and $wpdb->prepare(); found $audit_table
Sample message
Processing form data without nonce verification.
Sample message
Processing form data without nonce verification.
Sample message
Use placeholders and $wpdb->prepare(); found interpolated variable $audit_table_name at "SHOW TABLES LIKE '$audit_table_name'"
Sample message
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$object_class_qsm_render_pagination'.
Sample message
Unescaped parameter $audit_table used in $wpdb->get_var()\n$audit_table assigned unsafely at line 2119.
Sample message
Unescaped parameter $audit_table_name used in $wpdb->get_var()\n$audit_table_name assigned unsafely at line 1472.
Sample message
Attempting a database schema change is discouraged.
Sample message
Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "AcceptanceTester".
Sample message
Complex placeholders used for values in the query string in $wpdb->prepare() will NOT be quoted automagically. Found: %1s.
Sample message
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Sample message
Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "QSM_PLUGIN_BASENAME".
Sample message
Simple placeholders should not be quoted in the query string in $wpdb->prepare(). Found: '%d'.
Sample message
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$filter".
Sample message
Function "register_block_type()" requires WordPress 5.0.0, but your plugin minimum supported version is WordPress 4.9.0.
Sample message
Detected usage of meta_key, possible slow query.
Sample message
Detected usage of meta_query, possible slow query.
Sample message
Detected usage of meta_value, possible slow query.
Sample message
Sanitization missing for register_setting().
Sample message
load_plugin_textdomain() has been discouraged since WordPress version 4.6. When your plugin is hosted on WordPress.org, you no longer need to manually include this function call for translations under your plugin slug. WordPress will automatically load the translations for you as needed.
Potential connections found in static code analysis.
Outbound calls
113
External assets
9
Incoming endpoints
65
register_rest_route
register_rest_route
register_rest_route
register_rest_route
register_rest_route
register_rest_route
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
wp_ajax
24 more hidden
5 score snapshots
v11.2.3
24
Latest
v11.2.2
24
Score
| Scan | Score | Findings | Errors | Warnings | Plugin | Check |
|---|---|---|---|---|---|---|
| Latest | 24 | 3,014 | 406 | 2,608 | v11.2.3 | 2.0.0 |
| 24 | 3,009 | 406 | 2,603 | v11.2.2 | 2.0.0 |
Author, categories, issues, domains, and nearby plugins.