SEOPress – AI SEO Plugin & On-site SEO

WordPress SEO plugin with AI SEO metadata, schema, XML sitemap, redirections & Search Console. Privacy-first, white-label SEO. Now AI-ready.

v10.0Benjamin DenisUpdated Added 300k+ installs96% rating82% support resolved
32
Score
138
Errors
429
Warnings
+0
Change

Category Scores

Security0
Repo100
Performance93
Maintainability39

Issues to Review

Prioritized issue groups from the latest Plugin Check scan

567 findings

Security

288

12 issue groups

Maintainability

266

11 issue groups

Performance

4

1 issue group

I18n

1

1 issue group

WARNINGMaintainabilityNon Prefixed Variable FoundGlobal variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$add_to_cart_option".159
Category
Maintainability
Occurrences
159
Severity
warning

Sample message

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

ERRORSecurityOutput Not EscapedAll output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$backdrop'.106
Category
Security
Occurrences
106
Severity
error

Sample message

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$backdrop'.

WARNINGSecurityRecommendedProcessing form data without nonce verification.48
Category
Security
Occurrences
48
Severity
warning

Sample message

Processing form data without nonce verification.

WARNINGSecurityMissing Unslash$_POST[$value] not unslashed before sanitization. Use wp_unslash() or similar43
Category
Security
Occurrences
43
Severity
warning

Sample message

$_POST[$value] not unslashed before sanitization. Use wp_unslash() or similar

WARNINGMaintainabilityNon Prefixed Hookname FoundHook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "postmeta_form_limit".38
Category
Maintainability
Occurrences
38
Severity
warning

Sample message

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

WARNINGSecurityMissingProcessing form data without nonce verification.28
Category
Security
Occurrences
28
Severity
warning

Sample message

Processing form data without nonce verification.

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

Sample message

Use of a direct database call is discouraged.

WARNINGSecurityInput Not SanitizedDetected usage of a non-sanitized input variable: $_FILES['import_file']['name']23
Category
Security
Occurrences
23
Severity
warning

Sample message

Detected usage of a non-sanitized input variable: $_FILES['import_file']['name']

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

Sample message

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

WARNINGSecuritywp redirect wp redirectwp_redirect() found. Using wp_safe_redirect(), along with the "allowed_redirect_hosts" filter if needed, can help avoid any chances of malicious redirects within code. It is also important to remember to call exit() after a redirect so that no other unwanted code is executed.14
Category
Security
Occurrences
14
Severity
warning

Sample message

wp_redirect() found. Using wp_safe_redirect(), along with the "allowed_redirect_hosts" filter if needed, can help avoid any chances of malicious redirects within code. It is also important to remember to call exit() after a redirect so that no other unwanted code is executed.

Show 15 more
ERRORMaintainabilitywp function not compatible with requires wp10
Category
Maintainability
Occurrences
10
Severity
error

Sample message

Function "wp_get_ability_category()" requires WordPress 6.9.0, but your plugin minimum supported version is WordPress 6.5.0.

ERRORSecurityNot Prepared9
Category
Security
Occurrences
9
Severity
error

Sample message

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

ERRORSecurityUnescaped DBParameter6
Category
Security
Occurrences
6
Severity
error

Sample message

Unescaped parameter $post_types used in $wpdb->get_results()\n$post_types assigned unsafely at line 31.

WARNINGSecurityInterpolated Not Prepared5
Category
Security
Occurrences
5
Severity
warning

Sample message

Use placeholders and $wpdb->prepare(); found interpolated variable $blog_id at "SELECT * FROM $table_name WHERE blog_id = $blog_id"

WARNINGMaintainabilityNon Prefixed Function Found5
Category
Maintainability
Occurrences
5
Severity
warning

Sample message

Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "add_bulk_action_filters".

WARNINGMaintainabilityslow db query meta query4
Category
Maintainability
Occurrences
4
Severity
warning

Sample message

Detected usage of meta_query, possible slow query.

WARNINGSecurityInput Not Validated4
Category
Security
Occurrences
4
Severity
warning

Sample message

Detected usage of a possibly undefined superglobal array index: $_FILES['import_file']['name']. Check that the array index exists before using it.

WARNINGPerformancePost Not In exclude4
Category
Performance
Occurrences
4
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.

WARNINGMaintainabilityslow db query tax query2
Category
Maintainability
Occurrences
2
Severity
warning

Sample message

Detected usage of tax_query, possible slow query.

WARNINGMaintainabilitytrademarked term2
Category
Maintainability
Occurrences
2
Severity
warning

Sample message

The plugin name includes a restricted term. Your chosen plugin name - "SEOPress - AI SEO Plugin & On-site SEO" - contains the restricted term "plugin" which cannot be used at all in your plugin name.

WARNINGI18nload plugin textdomain Found1
Category
I18n
Occurrences
1
Severity
warning

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.

WARNINGSecurityUnescaped DBParameter1
Category
Security
Occurrences
1
Severity
warning

Sample message

Unescaped parameter $table_name used in $wpdb->get_results()\n$table_name assigned unsafely at line 23.

ERRORSecurityLike Wildcards In Query1
Category
Security
Occurrences
1
Severity
error

Sample message

SQL wildcards for a LIKE query should be passed in through a replacement parameter. Found: LIKE '\_%%'.

ERRORMaintainabilitydate date1
Category
Maintainability
Occurrences
1
Severity
error

Sample message

date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.

WARNINGMaintainabilityDynamic Hookname Found1
Category
Maintainability
Occurrences
1
Severity
warning

Sample message

Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "$value['filter']".

Score History

First score snapshot

v10.0

32

Latest

Findings
567
Errors
138
Warnings
429
Check
2.0.0

Related Plugins

noindex SEO

3k+ active installs

100
AIKTP

3k+ active installs

99
Canonical Link

2k+ active installs

99
99
IndexMeNow

2k+ active installs

99