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 |
|---|---|---|---|---|---|---|---|---|
| #1 | Intercom | 0 | 60 | 71 | 6k+ | Non-prefixed function | ||
| #2 | AnyComment | 17 | 445 | 449 | 5k+ | Output is not escaped | ||
| #3 | Shopping Cart & eCommerce Store | 17 | 7,492 | 17,554 | 3k+ | Non-prefixed global variable | ||
| #4 | Administrator Z | 18 | 2,061 | 799 | 400 | Output is not escaped | ||
| #5 | Pagopar – WooCommerce Gateway | 18 | 530 | 1,215 | 400 | Non-prefixed global variable | ||
| #6 | Netgsm | 19 | 352 | 348 | 1k+ | Non-prefixed global variable | ||
| #7 | Razorpay Payment Button Plugin | 19 | 486 | 98 | 2k+ | Exception output is not escaped | ||
| #8 | SysBasics Customize My Account for WooCommerce – Live My Account Customizer | 20 | 743 | 911 | 7k+ | Non-prefixed global variable | ||
| #9 | Download Monitor | 20 | 423 | 1,367 | 80k+ | Non-prefixed hook name | ||
| #10 | Event Organiser | 20 | 1,104 | 544 | 20k+ | Text Domain Mismatch | ||
| #11 | Razorpay Payment Button Elementor Plugin | 20 | 479 | 62 | 1k+ | Exception output is not escaped | ||
| #12 | Membership Plugin – Kadence Memberships | 20 | 5,089 | 3,005 | 9k+ | Text Domain Mismatch | ||
| #13 | Restrict User Access – Ultimate Membership & Content Protection | 20 | 977 | 1,848 | 10k+ | Non-prefixed global variable | ||
| #14 | Eupago Gateway For Woocommerce | 21 | 576 | 233 | 2k+ | Output is not escaped | ||
| #15 | Filter Everything — WordPress & WooCommerce Filters | 21 | 634 | 943 | 50k+ | Non-prefixed global variable | ||
| #16 | AI Infographic Maker | 21 | 1,311 | 456 | 600 | Output is not escaped | ||
| #17 | Mooberry Book Manager | 21 | 1,040 | 399 | 1k+ | Text Domain Mismatch | ||
| #18 | OneLogin SAML SSO | 21 | 507 | 330 | 7k+ | wp function not compatible with requires wp | ||
| #19 | Paid Membership Subscriptions – Effortless Memberships, Recurring Payments & Content Restriction | 21 | 1,994 | 5,331 | 10k+ | Non-prefixed hook name | ||
| #20 | PeachPay — Payments & Express Checkout for WooCommerce (supports Stripe, PayPal, Square, Authorize.net, NMI) | 21 | 502 | 821 | 300 | Missing direct file access protection | ||
| #21 | User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor | 21 | 739 | 1,495 | 40k+ | Non-prefixed global variable | ||
| #22 | Razorpay Quick Payments | 21 | 399 | 63 | 2k+ | Exception output is not escaped | ||
| #23 | Rocket Maintenance Mode & Coming Soon Page | 21 | 1,176 | 1,406 | 4k+ | Non-prefixed global variable | ||
| #24 | Royal Addons for Elementor – Addons and Templates Kit for Elementor | 21 | 12,998 | 2,344 | 600k+ | Text Domain Mismatch | ||
| #25 | Seamless Donations is Sunset | 21 | 600 | 514 | 2k+ | Text Domain Mismatch | ||
| #26 | WCFM – Frontend Manager for WooCommerce | 21 | 4,714 | 5,059 | 20k+ | Non-prefixed global variable | ||
| #27 | BuddyPress WooCommerce My Account Integration. Create WooCommerce Member Pages | 21 | 668 | 1,569 | 800 | Non-prefixed global variable | ||
| #28 | Pay For Post with WooCommerce | 21 | 958 | 1,477 | 1k+ | Non-prefixed global variable | ||
| #29 | WPScan – WordPress Security Scanner | 21 | 527 | 265 | 8k+ | Text Domain Mismatch | ||
| #30 | ANAC XML Bandi di Gara | 22 | 294 | 244 | 500 | Output is not escaped | ||
| #31 | Cleanup Action Scheduler | 22 | 545 | 1,306 | 1k+ | Non-prefixed global variable | ||
| #32 | CRT Addons Builder and Widgets for Elementor | 22 | 722 | 2,078 | 300 | Non-prefixed global variable | ||
| #33 | Free Downloads WooCommerce | 22 | 428 | 352 | 4k+ | Output is not escaped | ||
| #34 | E2Pdf – Export Pdf Tool for WordPress | 22 | 1,081 | 852 | 10k+ | Unsafe printing function | ||
| #35 | Ebook Store | 22 | 406 | 1,076 | 700 | Non-prefixed global variable | ||
| #36 | FACTO – Facturación Electrónica | 22 | 258 | 450 | 300 | Request data is not unslashed | ||
| #37 | IMPress for IDX Broker | 22 | 1,095 | 636 | 7k+ | Text Domain Mismatch | ||
| #38 | Imagify Image Optimization: Optimize Images | Compress & Convert to WebP/AVIF | 22 | 416 | 868 | 1m+ | Non-prefixed global variable | ||
| #39 | Jetpack – WP Security, Backup, Speed, & Growth | 22 | 3,422 | 1,481 | 3m+ | Text Domain Mismatch | ||
| #40 | King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder | 22 | 1,835 | 3,899 | 10k+ | Non-prefixed global variable | ||
| #41 | MarketKing — Ultimate WooCommerce Multivendor Marketplace Solution | 22 | 1,132 | 1,844 | 700 | Non-prefixed global variable | ||
| #42 | MotoPress Hotel Booking | 22 | 3,067 | 1,050 | 10k+ | Text Domain Mismatch | ||
| #43 | myCred Addons – Ultimate myCred Modules To Support WordPress Gamification and Loyalty Rewards | 22 | 2,344 | 1,320 | 400 | Output is not escaped | ||
| #44 | WP OAuth Server (OAuth Authentication) | 22 | 189 | 345 | 3k+ | Non-prefixed function | ||
| #45 | PageSpeed Ninja – Cache, Minify, Defer CSS JavaScript, Critical CSS, Optimize Images, Convert WebP | 22 | 984 | 407 | 5k+ | Unsafe printing function | ||
| #46 | The Moneytizer | 22 | 751 | 271 | 1k+ | Text Domain Mismatch | ||
| #47 | Uncanny Toolkit for LearnDash | 22 | 539 | 994 | 20k+ | Output is not escaped | ||
| #48 | UpStream: a Project Management Plugin for WordPress | 22 | 683 | 703 | 500 | Non-prefixed global variable | ||
| #49 | Paysera Payment Gateway for WooCommerce | 22 | 1,870 | 198 | 7k+ | Exception output is not escaped | ||
| #50 | WPBITS Addons For Elementor Page Builder | 22 | 996 | 1,399 | 2k+ | Non-prefixed global variable |