Quickly create WordPress pages with 20+ blocks, 100+ ready-to-import designs, and advanced editor extensions. It’s website building, Lego-style!
Category Scores
Top Issues by Category
maintainability398
i18n22
security15
Issues Details
437 issues found in latest scan
Offloading images, js, css, and other scripts to your servers or any remote service is disallowed.
Editor blocks must define "apiVersion" 3 or higher in block.json for WordPress 7.0+ iframe editor compatibility.
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$aw_icons_map".
Mismatched text domain. Expected 'otter-blocks' but got 'blocks-animation'.
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "neve_has_block_editor_module".
All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.
$_COOKIE['o_stripe_data'] not unslashed before sanitization. Use wp_unslash() or similar
File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: readfile().
The plugin name includes a restricted term. Your chosen plugin name - "Otter Blocks - Gutenberg Blocks, Page Builder for Gutenberg Editor & FSE" - contains the restricted term "gutenberg" which cannot be used at all in your plugin name.
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.
Short URL detected (bit.ly). Use full URLs instead of URL shorteners.
Your plugin has a different license declared in the readme file and plugin header. Please update your readme with a valid GPL license identifier.
Plugin name "Otter Blocks - Gutenberg Blocks, Page Builder for Gutenberg Editor & FSE" is different from the name declared in plugin header "Otter – Page Builder Blocks & Extensions for Gutenberg".
The "/vendor" directory using composer exists, but "composer.json" file is missing.
The "Domain Path" header in the plugin file must point to an existing folder. Found: "languages"
| Code | Type | Message | Count |
|---|---|---|---|
| PluginCheck.CodeAnalysis.Offloading.OffloadedContent | ERROR | Offloading images, js, css, and other scripts to your servers or any remote service is disallowed. | 143 |
| block_api_version_too_low | ERROR | Editor blocks must define "apiVersion" 3 or higher in block.json for WordPress 7.0+ iframe editor compatibility. | 100 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 68 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$aw_icons_map". | 65 |
| WordPress.WP.I18n.TextDomainMismatch | ERROR | Mismatched text domain. Expected 'otter-blocks' but got 'blocks-animation'. | 21 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "neve_has_block_editor_module". | 14 |
| WordPress.Security.EscapeOutput.UnsafePrintingFunction | ERROR | All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'. | 8 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_COOKIE['o_stripe_data'] not unslashed before sanitization. Use wp_unslash() or similar | 7 |
| WordPress.WP.AlternativeFunctions.file_system_operations_readfile | ERROR | File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: readfile(). | 2 |
| trademarked_term | WARNING | The plugin name includes a restricted term. Your chosen plugin name - "Otter Blocks - Gutenberg Blocks, Page Builder for Gutenberg Editor & FSE" - contains the restricted term "gutenberg" which cannot be used at all in your plugin name. | 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 |
| PluginCheck.CodeAnalysis.ShortURL.Found | WARNING | Short URL detected (bit.ly). Use full URLs instead of URL shorteners. | 1 |
| application_detected | ERROR | Application files are not permitted. | 1 |
| license_mismatch | ERROR | Your plugin has a different license declared in the readme file and plugin header. Please update your readme with a valid GPL license identifier. | 1 |
| mismatched_plugin_name | WARNING | Plugin name "Otter Blocks - Gutenberg Blocks, Page Builder for Gutenberg Editor & FSE" is different from the name declared in plugin header "Otter – Page Builder Blocks & Extensions for Gutenberg". | 1 |
| missing_composer_json_file | WARNING | The "/vendor" directory using composer exists, but "composer.json" file is missing. | 1 |
| plugin_header_nonexistent_domain_path | WARNING | The "Domain Path" header in the plugin file must point to an existing folder. Found: "languages" | 1 |
Latest Snapshot
Findings
437
Errors
344
Warnings
93
Score History
First score snapshot
First scan completed Jun 19, 2026
v3.1.11 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 19, 2026
v3.1.11
54
Latest
- Findings
- 437
- Errors
- 344
- Warnings
- 93
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 19, 2026Latest | 54 | 437 | 344 | 93 | v3.1.11 | 2.0.0 | 2026.06-mvp-static-v2 |