Amelia is a powerful booking plugin for appointments and events. Manage scheduling, calendars, and availability with an all-in-one booking system.
Category Scores
Top Issues by Category
security1,254
maintainability442
Issues Details
1,969 issues found in latest scan
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"Capacity '$capacity' must be whole number between "'.
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$code".
Mismatched text domain. Expected 'ameliabooking' but got "wpamelia".
The $text parameter must be a single text string literal. Found: 'Read-only abilities for the Amelia booking system. Canonical workflow: ' .\n '1) amelia/list-services — get service IDs and prices; ' .\n '2) amelia/list-employees — get provider IDs for that service; ' .\n '3) amelia/check-availability — find open timeslots; ' .\n '4) amelia/list-customers (or amelia/add-customer) — resolve the customer ID; ' .\n 'then hand off to an amelia-write ability to complete the booking.'
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"var wpAmeliaTimeZones = $timeZones;"'.
Use placeholders and $wpdb->prepare(); found interpolated variable {$deletedProvidersIdsQuery} at "UPDATE {$table} SET providerId = NULL WHERE providerId IN ({$deletedProvidersIdsQuery})"
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
Using cURL functions is highly discouraged. Use wp_remote_get() instead.
Unescaped parameter $table used in $wpdb->get_col()\n$table assigned unsafely at line 45.
Resource version not set in call to wp_enqueue_script(). This means new versions of the script may not always be loaded due to browser caching.
Processing form data without nonce verification.
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.
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
$_GET['ameliaCache'] not unslashed before sanitization. Use wp_unslash() or similar
error_log() found. Debug code should not normally be used in production.
Using cURL functions is highly discouraged. Use wp_remote_get() instead.
Using cURL functions is highly discouraged. Use wp_remote_get() instead.
Function "wp_register_ability()" requires WordPress 6.9.0, but your plugin minimum supported version is WordPress 6.5.0.
Detected usage of a non-sanitized input variable: $_GET['ameliaCache']
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.
Using cURL functions is highly discouraged. Use wp_remote_get() instead.
Using cURL functions is highly discouraged. Use wp_remote_get() instead.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.Security.EscapeOutput.ExceptionNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"Capacity '$capacity' must be whole number between "'. | 1,014 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$code". | 159 |
| WordPress.WP.I18n.TextDomainMismatch | ERROR | Mismatched text domain. Expected 'ameliabooking' but got "wpamelia". | 125 |
| WordPress.WP.I18n.NonSingularStringLiteralText | ERROR | The $text parameter must be a single text string literal. Found: 'Read-only abilities for the Amelia booking system. Canonical workflow: ' .\n '1) amelia/list-services — get service IDs and prices; ' .\n '2) amelia/list-employees — get provider IDs for that service; ' .\n '3) amelia/check-availability — find open timeslots; ' .\n '4) amelia/list-customers (or amelia/add-customer) — resolve the customer ID; ' .\n 'then hand off to an amelia-write ability to complete the booking.' | 100 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"var wpAmeliaTimeZones = $timeZones;"'. | 83 |
| WordPress.DB.PreparedSQL.InterpolatedNotPrepared | WARNING | Use placeholders and $wpdb->prepare(); found interpolated variable {$deletedProvidersIdsQuery} at "UPDATE {$table} SET providerId = NULL WHERE providerId IN ({$deletedProvidersIdsQuery})" | 46 |
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 44 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 44 |
| WordPress.WP.AlternativeFunctions.curl_curl_setopt | ERROR | Using cURL functions is highly discouraged. Use wp_remote_get() instead. | 42 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | WARNING | Unescaped parameter $table used in $wpdb->get_col()\n$table assigned unsafely at line 45. | 41 |
| WordPress.WP.EnqueuedResourceParameters.MissingVersion | WARNING | Resource version not set in call to wp_enqueue_script(). This means new versions of the script may not always be loaded due to browser caching. | 31 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 24 |
| 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. | 23 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 22 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_GET['ameliaCache'] not unslashed before sanitization. Use wp_unslash() or similar | 17 |
| WordPress.PHP.DevelopmentFunctions.error_log_error_log | WARNING | error_log() found. Debug code should not normally be used in production. | 16 |
| WordPress.WP.AlternativeFunctions.curl_curl_exec | ERROR | Using cURL functions is highly discouraged. Use wp_remote_get() instead. | 14 |
| WordPress.WP.AlternativeFunctions.curl_curl_init | ERROR | Using cURL functions is highly discouraged. Use wp_remote_get() instead. | 14 |
| wp_function_not_compatible_with_requires_wp | ERROR | Function "wp_register_ability()" requires WordPress 6.9.0, but your plugin minimum supported version is WordPress 6.5.0. | 14 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_GET['ameliaCache'] | 13 |
| WordPress.DB.PreparedSQL.NotPrepared | ERROR | Use placeholders and $wpdb->prepare(); found $command | 8 |
| 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. | 8 |
| WordPress.Security.NonceVerification.Missing | WARNING | Processing form data without nonce verification. | 8 |
| WordPress.WP.AlternativeFunctions.curl_curl_getinfo | ERROR | Using cURL functions is highly discouraged. Use wp_remote_get() instead. | 6 |
| WordPress.WP.AlternativeFunctions.curl_curl_error | ERROR | Using cURL functions is highly discouraged. Use wp_remote_get() instead. | 5 |
Latest Snapshot
Findings
1,969
Errors
1,489
Warnings
480
Score History
First score snapshot
First scan completed Jun 20, 2026
v2.4.2 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 20, 2026
v2.4.2
22
Latest
- Findings
- 1,969
- Errors
- 1,489
- Warnings
- 480
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 20, 2026Latest | 22 | 1,969 | 1,489 | 480 | v2.4.2 | 2.0.0 | 2026.06-mvp-static-v2 |