Lets you edit the WordPress admin menu. You can re-order, hide or rename menus, add custom menus and more.
Category Scores
Top Issues by Category
maintainability256
security131
i18n4
supply_chain1
Issues Details
392 issues found in latest scan
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$action_key".
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$attachmentId'.
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"Dependency with handle \"$handle\" not found."'.
Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "Ajaw_v1_Action".
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "ajaw_v1_CreateAction".
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "admin-menu-editor-display_addons".
$_COOKIE[self::COOKIE_NAME] not unslashed before sanitization. Use wp_unslash() or similar
All output should be run through an escaping function (like echo esc_html_x() or echo esc_attr_x()), found '_ex'.
In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header.
Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "AME_CUSTOMIZABLE_BASE_FILE".
File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: fclose().
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.
The Services_JSON class has been deprecated since WordPress version 5.3.0. Use The PHP native JSON extension instead.
Plugin folders are deleted when upgraded. Do not save data to the plugin folder using file_put_contents(). Detected usage of __FILE__ or __DIR__ magic constant. Use wp_upload_dir() to get the uploads directory path or save to the database instead.
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.
Plugin Updater detected. These are not permitted in WordPress.org hosted plugins. Detected: site_transient_update_plugins
Function "is_login()" requires WordPress 6.1.0, but your plugin minimum supported version is WordPress 5.9.0.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$action_key". | 159 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$attachmentId'. | 72 |
| WordPress.Security.EscapeOutput.ExceptionNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"Dependency with handle \"$handle\" not found."'. | 48 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound | WARNING | Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "Ajaw_v1_Action". | 40 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 24 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound | WARNING | Functions declared in the global namespace by a theme/plugin should start with the theme/plugin prefix. Found: "ajaw_v1_CreateAction". | 12 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "admin-menu-editor-display_addons". | 6 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_COOKIE[self::COOKIE_NAME] not unslashed before sanitization. Use wp_unslash() or similar | 6 |
| WordPress.Security.EscapeOutput.UnsafePrintingFunction | ERROR | All output should be run through an escaping function (like echo esc_html_x() or echo esc_attr_x()), found '_ex'. | 4 |
| WordPress.WP.EnqueuedResourceParameters.NotInFooter | WARNING | In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header. | 4 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound | WARNING | Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "AME_CUSTOMIZABLE_BASE_FILE". | 3 |
| WordPress.WP.AlternativeFunctions.file_system_operations_fclose | ERROR | File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: fclose(). | 3 |
| 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. | 2 |
| WordPress.WP.DeprecatedClasses.services_jsonFound | ERROR | The Services_JSON class has been deprecated since WordPress version 5.3.0. Use The PHP native JSON extension instead. | 2 |
| WordPress.WP.I18n.MissingArgDomain | ERROR | Missing $domain parameter in function call to __(). | 2 |
| PluginCheck.CodeAnalysis.WriteFile.PluginDirectoryWrite | ERROR | Plugin folders are deleted when upgraded. Do not save data to the plugin folder using file_put_contents(). Detected usage of __FILE__ or __DIR__ magic constant. Use wp_upload_dir() to get the uploads directory path or save to the database instead. | 1 |
| WordPress.Security.SafeRedirect.wp_redirect_wp_redirect | WARNING | 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. | 1 |
| hidden_files | ERROR | Hidden files are not permitted. | 1 |
| plugin_updater_detected | ERROR | Plugin Updater detected. These are not permitted in WordPress.org hosted plugins. Detected: site_transient_update_plugins | 1 |
| wp_function_not_compatible_with_requires_wp | ERROR | Function "is_login()" requires WordPress 6.1.0, but your plugin minimum supported version is WordPress 5.9.0. | 1 |
Latest Snapshot
Findings
392
Errors
159
Warnings
233
Score History
First score snapshot
First scan completed Jun 19, 2026
v1.15.1 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 19, 2026
v1.15.1
32
Latest
- Findings
- 392
- Errors
- 159
- Warnings
- 233
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 19, 2026Latest | 32 | 392 | 159 | 233 | v1.15.1 | 2.0.0 | 2026.06-mvp-static-v2 |