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 |
|---|---|---|---|---|---|---|---|---|
| #151 | WPeMatico RSS Feed Fetcher | 24 | 1,378 | 587 | 10k+ | Output is not escaped | ||
| #152 | bbp style pack | 25 | 1,419 | 1,791 | 6k+ | Output is not escaped | ||
| #153 | Booking Activities | 25 | 1,036 | 1,469 | 3k+ | Output is not escaped | ||
| #154 | BuddyPress Docs | 25 | 284 | 421 | 7k+ | Nonce verification recommended | ||
| #155 | HIPAA FORMS | 25 | 414 | 416 | 800 | Request data is not unslashed | ||
| #156 | DecaLog | 25 | 943 | 236 | 1k+ | Exception output is not escaped | ||
| #157 | FlatPM – Ad Manager, AdSense and Custom Code | 25 | 3,017 | 557 | 10k+ | Text Domain Mismatch | ||
| #158 | Photo Gallery by FooGallery : Responsive Image Gallery, Masonry Gallery & Carousel | 25 | 876 | 1,798 | 100k+ | Non-prefixed global variable | ||
| #159 | Gallery Images Ape | 25 | 588 | 341 | 1k+ | Output is not escaped | ||
| #160 | HashBar – Announcement, Notification Bar & Popup Campaign | 25 | 2,718 | 610 | 8k+ | Text Domain Mismatch | ||
| #161 | IP Location Block | 25 | 521 | 624 | 10k+ | Output is not escaped | ||
| #162 | IP Locator | 25 | 482 | 211 | 600 | Text Domain Mismatch | ||
| #163 | MaxButtons – Create buttons | 25 | 626 | 404 | 70k+ | Output is not escaped | ||
| #164 | Multibanco / MB Way / Payshop / Cofidis Pay (by LUSOPAY) for WooCommerce | 25 | 492 | 216 | 400 | Text Domain Mismatch | ||
| #165 | Object Sync for Salesforce | 25 | 192 | 296 | 500 | Non-prefixed global variable | ||
| #166 | Password Protected — Lock Entire Site, Pages, Posts, Categories, and Partial Content | 25 | 681 | 1,517 | 300k+ | Non-prefixed global variable | ||
| #167 | Piotnet Forms | 25 | 187 | 374 | 3k+ | Alternative PHP tag found | ||
| #168 | Post Snippets – Custom WordPress Code Snippets Customizer | 25 | 808 | 1,654 | 20k+ | Non-prefixed global variable | ||
| #169 | Premmerce | 25 | 712 | 1,411 | 500 | Non-prefixed global variable | ||
| #170 | Premmerce Product Search for WooCommerce | 25 | 596 | 1,350 | 900 | Non-prefixed global variable | ||
| #171 | Rate limiting for Contact Form 7 | 25 | 547 | 1,306 | 500 | Non-prefixed global variable | ||
| #172 | reSmush.it : The original free image compressor and optimizer plugin | 25 | 155 | 69 | 100k+ | Output is not escaped | ||
| #173 | SEO Repair Kit – Meta Manager, Schema Manager, SEO Content Monitoring, GSC Integration, Keyword & Rank Tracking | 25 | 196 | 902 | 2k+ | Direct Query | ||
| #174 | Sitemap by click5 | 25 | 286 | 132 | 6k+ | Unsafe printing function | ||
| #175 | Themify Event Post | 25 | 397 | 143 | 3k+ | Output is not escaped | ||
| #176 | Timeline Express | 25 | 531 | 147 | 9k+ | Text Domain Mismatch | ||
| #177 | Toocheke Companion | 25 | 421 | 1,132 | 1k+ | Non-prefixed global variable | ||
| #178 | Webcomic | 25 | 593 | 308 | 600 | Output is not escaped | ||
| #179 | WP Airbnb Review Slider | 25 | 325 | 646 | 1k+ | Non-prefixed global variable | ||
| #180 | Nested Pages | 25 | 674 | 560 | 90k+ | Non-prefixed global variable | ||
| #181 | Perfect Images: Regenerate Thumbnails, Image Sizes, WebP & AVIF | 25 | 158 | 118 | 60k+ | Non-prefixed global variable | ||
| #182 | WP Yelp Review Slider | 25 | 600 | 1,086 | 1k+ | Non-prefixed global variable | ||
| #183 | WPCargo Track & Trace | 25 | 239 | 557 | 10k+ | Non-prefixed global variable | ||
| #184 | Floating Chat Widget: Contact Chat Icons, Telegram Chat, Line Messenger, WeChat, Email, SMS, Call Button – Chaty | 26 | 113 | 671 | 400k+ | Non-prefixed global variable | ||
| #185 | Translate WordPress with ConveyThis – AI Multilingual Plugin | 26 | 159 | 297 | 1k+ | Non-prefixed global variable | ||
| #186 | ezCache | 26 | 127 | 288 | 10k+ | Direct Query | ||
| #187 | Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager | 26 | 113 | 597 | 90k+ | Non-prefixed global variable | ||
| #188 | Translate WordPress – Google Language Translator | 26 | 200 | 317 | 100k+ | Non-prefixed global variable | ||
| #189 | Media File Renamer: Rename for better SEO (AI-Powered) | 26 | 154 | 170 | 40k+ | Direct Query | ||
| #190 | Hotel Booking | 26 | 690 | 940 | 4k+ | Unsafe printing function | ||
| #191 | OOPSpam Anti-Spam: Spam Protection for WordPress Forms & Comments (No CAPTCHA) | 26 | 272 | 599 | 6k+ | Request data is not unslashed | ||
| #192 | Open User Map – Interactive Leaflet Maps | 26 | 895 | 988 | 10k+ | Non-prefixed global variable | ||
| #193 | Paytium: Mollie payment forms & donations | 26 | 506 | 551 | 3k+ | Unsafe printing function | ||
| #194 | SEO Booster | 26 | 403 | 1,331 | 1k+ | Non-prefixed global variable | ||
| #195 | Sliced Invoices – WordPress Invoice Plugin | 26 | 684 | 455 | 5k+ | Output is not escaped | ||
| #196 | Theater for WordPress | 26 | 348 | 344 | 600 | Output is not escaped | ||
| #197 | Virtue/Ascend/Pinnacle Toolkit | 26 | 605 | 300 | 30k+ | Output is not escaped | ||
| #198 | Cart Abandonment Recovery for WooCommerce – Recover Lost Sales with Automated Emails | 26 | 51 | 325 | 300k+ | Direct Query | ||
| #199 | Premmerce SEO for WooCommerce | 26 | 550 | 1,285 | 1k+ | Non-prefixed global variable | ||
| #200 | Accordions – Responsive Accordion & FAQ Plugin for WordPress | 27 | 554 | 158 | 1k+ | Text Domain Mismatch |