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 |
|---|---|---|---|---|---|---|---|---|
| #951 | Simple Automatic Updates | 85 | 18 | 1 | 2k+ | Missing Translators Comment | ||
| #952 | FormsCRM – Connect Forms to CRM directly | 86 | 5 | 8 | 1k+ | Missing direct file access protection | ||
| #953 | lazysizes | 86 | 12 | 3 | 600 | wp function not compatible with requires wp | ||
| #954 | AI for Home Services | 86 | 8 | 5 | 700 | Setting is missing a sanitization callback | ||
| #955 | WP YouTube Live | 86 | 28 | 24 | 1k+ | Non-prefixed function | ||
| #956 | Alligator Menu Popup | 87 | 4 | 1 | 600 | Missing Arg Domain | ||
| #957 | Cookie Notice lite | 87 | 3 | 1 | 400 | Missing direct file access protection | ||
| #958 | Donorbox – Free Recurring Donation Plugin and Fundraising Platform | 87 | 5 | 6 | 8k+ | Missing Arg Domain | ||
| #959 | Embed Any Document – Embed PDF, Word, PowerPoint and Excel Files | 87 | 7 | 5 | 50k+ | Setting is missing a sanitization callback | ||
| #960 | GTM Kit – Google Tag Manager & GA4 integration | 87 | 5 | 17 | 30k+ | Missing direct file access protection | ||
| #961 | WP CountUP JS | 87 | 3 | 3 | 1k+ | trademarked term | ||
| #962 | WP OPcache | 88 | 6 | 25 | 10k+ | Non-prefixed global variable | ||
| #963 | Module Control for Jetpack | 88 | 11 | 15 | 1k+ | Non-prefixed global variable | ||
| #964 | Simple Custom CSS Plugin | 88 | 17 | 5 | 100k+ | wp function not compatible with requires wp | ||
| #965 | The Events Calendar: Category Colors | 88 | 18 | 42 | 5k+ | Non-prefixed global variable | ||
| #966 | File Uploads Addon for WooCommerce | 88 | 8 | 15 | 5k+ | Missing direct file access protection | ||
| #967 | Leadfeeder | 89 | 2 | 3 | 2k+ | Non-prefixed class | ||
| #968 | Impressum | 89 | 50 | 12 | 4k+ | Short PHP open tag found | ||
| #969 | Link View | 89 | 99 | 5 | 800 | Missing Translators Comment | ||
| #970 | Mediavine Control Panel | 89 | 30 | 30 | 10k+ | Text Domain Mismatch | ||
| #971 | Pending Submission Notifications | 89 | 4 | 3 | 1k+ | Non-prefixed function | ||
| #972 | QODE Wishlist for WooCommerce | 89 | 2 | 178 | 10k+ | Non-prefixed global variable | ||
| #973 | User Role for Flamingo | 89 | 2 | 4 | 700 | Non-prefixed function | ||
| #974 | WP AutoTags | 89 | 4 | 5 | 1k+ | trademarked term | ||
| #975 | WPGet API – Connect to any external REST API | 89 | 15 | 19 | 10k+ | Missing direct file access protection | ||
| #976 | Contact Form 7 Google Analytics | 90 | 6 | 5 | 7k+ | trademarked term | ||
| #977 | Easy Google Fonts | 90 | 12 | 26 | 100k+ | Non-prefixed hook name | ||
| #978 | Genesis Custom Blocks | 90 | 7 | 22 | 10k+ | Non-prefixed function | ||
| #979 | QODE Quick View for WooCommerce | 90 | 2 | 98 | 10k+ | Non-prefixed global variable | ||
| #980 | Simple Auto-Poster for Bluesky | 90 | 3 | 2 | 700 | Setting is missing a sanitization callback | ||
| #981 | Add Anchor Links | 91 | 5 | 2 | 1k+ | application detected | ||
| #982 | Block Guide Lines | 91 | 6 | 3 | 900 | Non-prefixed function | ||
| #983 | Chatbase | 91 | 4 | 4 | 5k+ | Non-prefixed function | ||
| #984 | Bulk Post Category Creator | 91 | 20 | 2 | 1k+ | Text Domain Mismatch | ||
| #985 | Elmo | 91 | 6 | 2 | 900 | Missing direct file access protection | ||
| #986 | Faust.js | 91 | 9 | 4 | 1k+ | Missing direct file access protection | ||
| #987 | Givebutter Widget | 91 | 8 | 2 | 6k+ | wp function not compatible with requires wp | ||
| #988 | Hide Author Archive | 91 | 6 | 3 | 500 | Missing direct file access protection | ||
| #989 | Link Juice Keeper | 91 | 4 | 36 | 10k+ | Non-prefixed hook name | ||
| #990 | Loan Calculator WP | 91 | 15 | 5 | 2k+ | Non Singular String Literal Text | ||
| #991 | MC4WP: WPML Integration | 91 | 7 | 9 | 2k+ | Missing direct file access protection | ||
| #992 | Super Light Cache Buster | 91 | 6 | 4 | 700 | Non-prefixed function | ||
| #993 | VenoBox Lightbox | 91 | 11 | 4 | 1k+ | Text Domain Mismatch | ||
| #994 | Block Emails for WooCommerce Checkout | 91 | 4 | 3 | 700 | Setting is missing a sanitization callback | ||
| #995 | Bootstrap Blocks | 91 | 8 | 30 | 10k+ | Non-prefixed global variable | ||
| #996 | Admin Taxonomy Filter | 92 | 3 | 3 | 5k+ | Non-prefixed class | ||
| #997 | Auto SRI | 92 | 4 | 1 | 500 | wp function not compatible with requires wp | ||
| #998 | Expire Passwords | 92 | 7 | 2 | 500 | Missing Translators Comment | ||
| #999 | FMTC Affiliate Disclosure | 92 | 5 | 0 | 1k+ | Missing Arg Domain | ||
| #1000 | Version Control for jQuery | 92 | 5 | 1 | 6k+ | Offloaded Content |