Smart WordPress security that blocks bots automatically, guides you to what matters, and repairs problems — without drowning you in noise.
Category Scores
Top Issues by Category
i18n685
security414
maintainability179
Issues Details
1,320 issues found in latest scan
A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$ae'.
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 '$args['after_title']'.
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$con->prefix( 'after_pre_options_store' )".
The "shield/2fa" prefix is not a valid namespace/function/class/variable/constant prefix in PHP.
var_dump() found. Debug code should not normally be used in production.
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "login_body_class".
var_export() found. Debug code should not normally be used in production.
The $text parameter must be a single text string literal. Found: $cfg->properties[ 'name' ]
Processing form data without nonce verification.
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
The $plural parameter must be a single text string literal. Found: $tabKey === 'plugins' ? '%s plugins need review.' : '%s themes need review.'
The $single parameter must be a single text string literal. Found: $tabKey === 'plugins' ? '%s plugin needs review.' : '%s theme needs review.'
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$oICWP_Wpsf".
strip_tags() is discouraged. Use the more comprehensive wp_strip_all_tags() instead.
Missing singular placeholder, needed for some languages. See https://codex.wordpress.org/I18n_for_WordPress_Developers#Plurals
Incorrect number of replacements passed to $wpdb->prepare(). Found 2 replacement parameters, expected 0.
Detected usage of meta_key, possible slow query.
date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.
Processing form data without nonce verification.
Detected usage of a non-sanitized input variable: $_FILES['import_file']['tmp_name']
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.WP.I18n.MissingTranslatorsComment | ERROR | A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders. | 658 |
| WordPress.Security.EscapeOutput.ExceptionNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$ae'. | 332 |
| WordPress.PHP.DevelopmentFunctions.error_log_error_log | WARNING | error_log() found. Debug code should not normally be used in production. | 54 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$args['after_title']'. | 48 |
| WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$con->prefix( 'after_pre_options_store' )". | 25 |
| WordPress.NamingConventions.PrefixAllGlobals.InvalidPrefixPassed | WARNING | The "shield/2fa" prefix is not a valid namespace/function/class/variable/constant prefix in PHP. | 21 |
| WordPress.PHP.DevelopmentFunctions.error_log_var_dump | WARNING | var_dump() found. Debug code should not normally be used in production. | 19 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "login_body_class". | 15 |
| WordPress.DB.PreparedSQL.NotPrepared | ERROR | Use placeholders and $wpdb->prepare(); found $dbCon | 13 |
| WordPress.PHP.DevelopmentFunctions.error_log_var_export | WARNING | var_export() found. Debug code should not normally be used in production. | 13 |
| WordPress.WP.I18n.NonSingularStringLiteralText | ERROR | The $text parameter must be a single text string literal. Found: $cfg->properties[ 'name' ] | 13 |
| WordPress.Security.NonceVerification.Missing | WARNING | Processing form data without nonce verification. | 12 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 8 |
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 5 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 5 |
| WordPress.WP.I18n.NonSingularStringLiteralPlural | ERROR | The $plural parameter must be a single text string literal. Found: $tabKey === 'plugins' ? '%s plugins need review.' : '%s themes need review.' | 5 |
| WordPress.WP.I18n.NonSingularStringLiteralSingle | ERROR | The $single parameter must be a single text string literal. Found: $tabKey === 'plugins' ? '%s plugin needs review.' : '%s theme needs review.' | 5 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$oICWP_Wpsf". | 4 |
| WordPress.WP.AlternativeFunctions.strip_tags_strip_tags | ERROR | strip_tags() is discouraged. Use the more comprehensive wp_strip_all_tags() instead. | 4 |
| WordPress.WP.I18n.MissingSingularPlaceholder | ERROR | Missing singular placeholder, needed for some languages. See https://codex.wordpress.org/I18n_for_WordPress_Developers#Plurals | 4 |
| WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber | WARNING | Incorrect number of replacements passed to $wpdb->prepare(). Found 2 replacement parameters, expected 0. | 3 |
| WordPress.DB.SlowDBQuery.slow_db_query_meta_key | WARNING | Detected usage of meta_key, possible slow query. | 3 |
| 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. | 3 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 3 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_FILES['import_file']['tmp_name'] | 3 |
Latest Snapshot
Findings
1,320
Errors
1,118
Warnings
202
Score History
First score snapshot
First scan completed Jun 20, 2026
v22.1.3 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 20, 2026
v22.1.3
23
Latest
- Findings
- 1,320
- Errors
- 1,118
- Warnings
- 202
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 20, 2026Latest | 23 | 1,320 | 1,118 | 202 | v22.1.3 | 2.0.0 | 2026.06-mvp-static-v2 |