Try FREE Theme Builder for Elementor with 50+ FREE widgets. Create a custom header, footer, singular, and archive layout in no time.
Category Scores
Top Issues by Category
maintainability34
security12
i18n6
performance2
Issues Details
56 issues found in latest scan
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "enable_xpro_theme_builder_render_archive".
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$label'.
$_POST['q'] not unslashed before sanitization. Use wp_unslash() or similar
The parameter "'orderby=date&hide_empty=0&number=1'" at position #2 of get_terms() has been deprecated since WordPress version 4.5.0. Instead do not pass the parameter.
Mismatched text domain. Expected 'xpro-theme-builder' but got 'xpro-elementor-addons'.
Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "Astra_Theme_Compatibility".
Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "get_xpro_theme_builder_footer_id".
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.
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.
Detected usage of tax_query, possible slow query.
Processing form data without nonce verification.
Detected usage of a non-sanitized input variable: $_POST['xpro_theme_builder_meta_nounce']
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.
Plugin name "Xpro Theme Builder For Elementor - FREE" is different from the name declared in plugin header "Xpro Elementor Theme Builder".
Tested up to: 6.8 < 7.0. The "Tested up to" value in your plugin is not set to the current version of WordPress. This means your plugin will not show up in searches, as we require plugins to be compatible and documented as tested up to the most recent version of WordPress.
Missing "License" in Plugin Header. Please update your Plugin Header with a valid GPLv2 (or later) compatible license.
Incorrect Stable Tag. It's recommended not to use "Stable Tag: trunk". Your Stable Tag is meant to be the stable version of your plugin and it needs to be exactly the same with the Version in your main plugin file's header. Any mismatch can prevent users from downloading the correct plugin files from WordPress.org.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "enable_xpro_theme_builder_render_archive". | 11 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 11 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$label'. | 5 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_POST['q'] not unslashed before sanitization. Use wp_unslash() or similar | 5 |
| WordPress.WP.DeprecatedParameters.Get_termsParam2Found | ERROR | The parameter "'orderby=date&hide_empty=0&number=1'" at position #2 of get_terms() has been deprecated since WordPress version 4.5.0. Instead do not pass the parameter. | 4 |
| WordPress.WP.I18n.TextDomainMismatch | ERROR | Mismatched text domain. Expected 'xpro-theme-builder' but got 'xpro-elementor-addons'. | 4 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound | WARNING | Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "Astra_Theme_Compatibility". | 3 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | WARNING | Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "get_xpro_theme_builder_footer_id". | 2 |
| WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_exclude | WARNING | 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. | 2 |
| PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound | WARNING | 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. | 1 |
| WordPress.DB.SlowDBQuery.slow_db_query_tax_query | WARNING | Detected usage of tax_query, possible slow query. | 1 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 1 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_POST['xpro_theme_builder_meta_nounce'] | 1 |
| 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. | 1 |
| mismatched_plugin_name | WARNING | Plugin name "Xpro Theme Builder For Elementor - FREE" is different from the name declared in plugin header "Xpro Elementor Theme Builder". | 1 |
| outdated_tested_upto_header | ERROR | Tested up to: 6.8 < 7.0. The "Tested up to" value in your plugin is not set to the current version of WordPress. This means your plugin will not show up in searches, as we require plugins to be compatible and documented as tested up to the most recent version of WordPress. | 1 |
| plugin_header_no_license | ERROR | Missing "License" in Plugin Header. Please update your Plugin Header with a valid GPLv2 (or later) compatible license. | 1 |
| trunk_stable_tag | ERROR | Incorrect Stable Tag. It's recommended not to use "Stable Tag: trunk". Your Stable Tag is meant to be the stable version of your plugin and it needs to be exactly the same with the Version in your main plugin file's header. Any mismatch can prevent users from downloading the correct plugin files from WordPress.org. | 1 |
Latest Snapshot
Findings
56
Errors
28
Warnings
28
Score History
First score snapshot
First scan completed Jun 20, 2026
v1.2.11 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 20, 2026
v1.2.11
66
Latest
- Findings
- 56
- Errors
- 28
- Warnings
- 28
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 20, 2026Latest | 66 | 56 | 28 | 28 | v1.2.11 | 2.0.0 | 2026.06-mvp-static-v2 |