PluginCheck.CodeAnalysis.SettingSanitization.register_settingMissing
Setting is missing a sanitization callback
A registered setting does not define a sanitization callback.
Why It Shows Up
Plugin Check found `register_setting()` without a `sanitize_callback` or equivalent validation strategy.
Why It Matters
Settings can be saved by administrators and then displayed or used later. Without sanitization, invalid or unsafe values can persist.
How to Fix
- Pass a `sanitize_callback` in the `register_setting()` arguments.
- Use built-in sanitizers for simple values and custom callbacks for structured settings.
- Validate allowed values and return a safe default when input is invalid.
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #801 | Magic Tooltips For Contact Form 7 | 61 | 37 | 21 | 700 | Text Domain Mismatch | ||
| #802 | PRyC WP: Add custom content to post and page (top/bottom) | 61 | 63 | 7 | 1k+ | Text Domain Mismatch | ||
| #803 | Widget Click to Chat | 61 | 22 | 4 | 500 | Setting is missing a sanitization callback | ||
| #804 | Wistia WordPress Plugin | 61 | 42 | 12 | 2k+ | Output is not escaped | ||
| #805 | WP-CORS | 61 | 7 | 23 | 1k+ | error log error log | ||
| #806 | Custom Site Logo | 62 | 26 | 4 | 1k+ | Unsafe printing function | ||
| #807 | Equalweb Accessibility | 62 | 21 | 5 | 4k+ | Output is not escaped | ||
| #808 | Include Matomo Tracking, by Jonas Hellmann | 62 | 14 | 4 | 500 | Setting is missing a sanitization callback | ||
| #809 | Live Simple Clock | 62 | 23 | 1 | 800 | Output is not escaped | ||
| #810 | Nimbata Call Tracking | 62 | 13 | 11 | 400 | Non-prefixed function | ||
| #811 | Embed Videos For Product Image Gallery Using WooCommerce | 62 | 21 | 16 | 400 | Text Domain Mismatch | ||
| #812 | WP Charts and Graphs – WordPress Chart Plugin | 62 | 8 | 29 | 1k+ | Input is not sanitized | ||
| #813 | Categories Images | 63 | 10 | 21 | 50k+ | wp function not compatible with requires wp | ||
| #814 | Custom post types, Custom Fields & more | 63 | 101 | 22 | 3k+ | Missing Translators Comment | ||
| #815 | EMI Calculator | 63 | 37 | 1 | 400 | Setting is missing a sanitization callback | ||
| #816 | Order auto complete for WooCommerce | 63 | 56 | 22 | 1k+ | Text Domain Mismatch | ||
| #817 | Simple WWW Redirect | 63 | 26 | 5 | 1k+ | Output is not escaped | ||
| #818 | Beautiful taxonomy filters | 64 | 38 | 78 | 2k+ | Non-prefixed global variable | ||
| #819 | Broadly for WordPress | 64 | 18 | 5 | 500 | Unsafe printing function | ||
| #820 | Channel.io | 64 | 14 | 3 | 1k+ | Output is not escaped | ||
| #821 | Nofollow for external link | 64 | 8 | 5 | 10k+ | Output is not escaped | ||
| #822 | Simple HTTPS Redirect | 64 | 19 | 5 | 900 | Output is not escaped | ||
| #823 | SMK Sidebar Generator | 64 | 19 | 5 | 10k+ | Output is not escaped | ||
| #824 | TP Show Product Images on Checkout Page for WooCommerce | 64 | 16 | 5 | 500 | Setting is missing a sanitization callback | ||
| #825 | WP REST API Controller | 64 | 8 | 22 | 8k+ | Nonce verification recommended | ||
| #826 | Яндекс.ПДС Пингер / Yandex Site search pinger | 64 | 21 | 5 | 800 | Output is not escaped | ||
| #827 | Dashboard Directory Size | 65 | 32 | 9 | 400 | Missing Arg Domain | ||
| #828 | Product Image and Video Gallery Slider for WooCommerce | 65 | 13 | 7 | 700 | Output is not escaped | ||
| #829 | Reading progressbar | 65 | 25 | 2 | 6k+ | Output is not escaped | ||
| #830 | SocketLabs | 65 | 15 | 18 | 900 | Output is not escaped | ||
| #831 | Lime Connect (formerly Userlike) – WordPress Live Chat plugin | 65 | 22 | 3 | 900 | Output is not escaped | ||
| #832 | Font Size | 66 | 17 | 1 | 600 | Unsafe printing function | ||
| #833 | Icon Widget | 66 | 14 | 9 | 4k+ | Output is not escaped | ||
| #834 | Free Property Valuation (Lead Generator) / Kostenlose Immobilienbewertung | 66 | 11 | 5 | 600 | Unsafe printing function | ||
| #835 | LeadBack – Callback, Chatbot and Live Chat Widgets for WordPress sites | 66 | 17 | 5 | 600 | Unsafe printing function | ||
| #836 | TAO Schedule Update | 66 | 37 | 11 | 2k+ | Text Domain Mismatch | ||
| #837 | Address correction autocomplete for Woo | 67 | 19 | 9 | 1k+ | Text Domain Mismatch | ||
| #838 | Raptive Ads | 67 | 34 | 31 | 6k+ | Text Domain Mismatch | ||
| #839 | Smart Related Products – AI-Inspired Recommendations for WooCommerce | 67 | 13 | 15 | 1k+ | Output is not escaped | ||
| #840 | Product Specifications for Woocommerce | 67 | 12 | 80 | 1k+ | Non-prefixed global variable | ||
| #841 | WP-Copyright-Protection | 67 | 24 | 5 | 5k+ | wp function not compatible with requires wp | ||
| #842 | ACF: Yandex Maps Field | 68 | 73 | 10 | 800 | Text Domain Mismatch | ||
| #843 | Auto Image Title & Alt | 68 | 13 | 4 | 400 | Missing direct file access protection | ||
| #844 | Clearout Email Validator – Real-Time Email Verification on WordPress Forms | 68 | 21 | 80 | 600 | Non-prefixed function | ||
| #845 | Content Security Policy Manager | 68 | 19 | 2 | 2k+ | Output is not escaped | ||
| #846 | Exchange Rates Today | 68 | 9 | 10 | 400 | Non-prefixed function | ||
| #847 | Logo Switcher | 68 | 14 | 2 | 800 | Output is not escaped | ||
| #848 | Template List Metabox | 68 | 14 | 10 | 900 | Missing Arg Domain | ||
| #849 | Dashboard Commander | 69 | 13 | 2 | 900 | Output is not escaped | ||
| #850 | HelpCrunch – Live Chat, Chatbot & Knowledge Base for Customer Service | 69 | 15 | 1 | 2k+ | Output is not escaped |