Appointment booking system for WordPress — schedule appointments, manage calendars, send reminders, take payments. Start booking today!
Category Scores
Top Issues by Category
i18n2,584
security1,077
maintainability705
Issues Details
4,398 issues found in latest scan
Mismatched text domain. Expected 'bookly-responsive-appointment-booking-tool' but got 'bookly'.
Use placeholders and $wpdb->prepare(); found $charset_collate
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$ad_data['button_url']'.
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$accept_pc".
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
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.
date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.
Unescaped parameter $customers_table used in $wpdb->get_results()\n$customers_table assigned unsafely at line 207.
Detected usage of a non-sanitized input variable: $_COOKIE[$cookie_name]
Unescaped parameter $foreign_key->TABLE_NAME used in $wpdb->query()\n$foreign_key->CONSTRAINT_NAME used without escaping.
$_COOKIE[$cookie_name] not unslashed before sanitization. Use wp_unslash() or similar
Attempting a database schema change is discouraged.
Processing form data without nonce verification.
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$class_name'.
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "admin_page_access_denied".
mt_rand() is discouraged. Use the far less predictable wp_rand() instead.
Detected usage of a possibly undefined superglobal array index: $_FILES['files']['name'][0]. Check that the array index exists before using it.
Processing form data without nonce verification.
Multiple placeholders in translatable strings should be ordered. Expected "%1$s, %2$d", but got "%s, %d" in '"%s" is too long (%d characters max).'.
All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.
Function "get_avatar_url()" requires WordPress 4.2.0, but your plugin minimum supported version is WordPress 3.7.0.
Use placeholders and $wpdb->prepare(); found interpolated variable $foreign_key->CONSTRAINT_NAME at "ALTER TABLE `$foreign_key->TABLE_NAME` DROP FOREIGN KEY `$foreign_key->CONSTRAINT_NAME`"
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.WP.I18n.TextDomainMismatch | ERROR | Mismatched text domain. Expected 'bookly-responsive-appointment-booking-tool' but got 'bookly'. | 2,439 |
| WordPress.DB.PreparedSQL.NotPrepared | ERROR | Use placeholders and $wpdb->prepare(); found $charset_collate | 410 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$ad_data['button_url']'. | 304 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$accept_pc". | 210 |
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 160 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 145 |
| 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. | 106 |
| 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. | 69 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | ERROR | Unescaped parameter $customers_table used in $wpdb->get_results()\n$customers_table assigned unsafely at line 207. | 67 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_COOKIE[$cookie_name] | 63 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | WARNING | Unescaped parameter $foreign_key->TABLE_NAME used in $wpdb->query()\n$foreign_key->CONSTRAINT_NAME used without escaping. | 52 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_COOKIE[$cookie_name] not unslashed before sanitization. Use wp_unslash() or similar | 52 |
| WordPress.DB.DirectDatabaseQuery.SchemaChange | WARNING | Attempting a database schema change is discouraged. | 47 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 39 |
| WordPress.Security.EscapeOutput.ExceptionNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$class_name'. | 32 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "admin_page_access_denied". | 29 |
| WordPress.WP.AlternativeFunctions.rand_mt_rand | ERROR | mt_rand() is discouraged. Use the far less predictable wp_rand() instead. | 26 |
| WordPress.Security.ValidatedSanitizedInput.InputNotValidated | WARNING | Detected usage of a possibly undefined superglobal array index: $_FILES['files']['name'][0]. Check that the array index exists before using it. | 23 |
| WordPress.WP.I18n.MissingArgDomain | ERROR | Missing $domain parameter in function call to __(). | 23 |
| WordPress.Security.NonceVerification.Missing | WARNING | Processing form data without nonce verification. | 16 |
| WordPress.WP.I18n.UnorderedPlaceholdersText | ERROR | Multiple placeholders in translatable strings should be ordered. Expected "%1$s, %2$d", but got "%s, %d" in '"%s" is too long (%d characters max).'. | 16 |
| WordPress.Security.EscapeOutput.UnsafePrintingFunction | ERROR | All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'. | 10 |
| wp_function_not_compatible_with_requires_wp | ERROR | Function "get_avatar_url()" requires WordPress 4.2.0, but your plugin minimum supported version is WordPress 3.7.0. | 10 |
| Squiz.PHP.DiscouragedFunctions.Discouraged | WARNING | The use of function ini_set() is discouraged | 9 |
| WordPress.DB.PreparedSQL.InterpolatedNotPrepared | WARNING | Use placeholders and $wpdb->prepare(); found interpolated variable $foreign_key->CONSTRAINT_NAME at "ALTER TABLE `$foreign_key->TABLE_NAME` DROP FOREIGN KEY `$foreign_key->CONSTRAINT_NAME`" | 9 |
Latest Snapshot
Findings
4,398
Errors
3,528
Warnings
870
Score History
First score snapshot
First scan completed Jun 20, 2026
v27.7 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 20, 2026
v27.7
25
Latest
- Findings
- 4,398
- Errors
- 3,528
- Warnings
- 870
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 20, 2026Latest | 25 | 4,398 | 3,528 | 870 | v27.7 | 2.0.0 | 2026.06-mvp-static-v2 |