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 |
|---|---|---|---|---|---|---|---|---|
| #851 | Add Widget After Content | 70 | 6 | 11 | 7k+ | Setting is missing a sanitization callback | ||
| #852 | AppScenic – Smart AI Dropshipping | 70 | 16 | 41 | 3k+ | Dynamic hook name | ||
| #853 | Private Store for WooCommerce B2B & Wholesale by B2BKing | 70 | 86 | 8 | 600 | Text Domain Mismatch | ||
| #854 | Yoast Duplicate Post | 70 | 8 | 88 | 4m+ | Nonce verification recommended | ||
| #855 | Embed Code – Headers & Footers by DesignBombs | 70 | 19 | 5 | 4k+ | Output is not escaped | ||
| #856 | Simple Post Notes | 70 | 5 | 16 | 9k+ | Request data is not unslashed | ||
| #857 | Simple Site Verify | 70 | 20 | 0 | 900 | Output is not escaped | ||
| #858 | TP Product Image Flipper for WooCommerce | 70 | 17 | 15 | 9k+ | Non-prefixed function | ||
| #859 | Block Emails & Addresses for WooCommerce Checkout | 70 | 4 | 12 | 700 | error log set error handler | ||
| #860 | Related Products for WooCommerce | 70 | 12 | 12 | 3k+ | Setting is missing a sanitization callback | ||
| #861 | WP Calorie Calculator | 70 | 22 | 55 | 1k+ | Non-prefixed global variable | ||
| #862 | Anant Addons for Elementor – Widgets, Templates & WooCommerce Builder | 71 | 21 | 207 | 700 | Non-prefixed global variable | ||
| #863 | Bootstrap Shortcodes | 71 | 21 | 11 | 5k+ | Missing direct file access protection | ||
| #864 | Social Chat Widget (⚡ by Callbell) | 71 | 11 | 6 | 600 | Output is not escaped | ||
| #865 | Easy Sticky Buttons | 71 | 21 | 16 | 600 | Short PHP open tag found | ||
| #866 | Really Simple Click To Call Bar | 71 | 23 | 3 | 8k+ | Output is not escaped | ||
| #867 | Social Fabric Analytics From Collective Bias | 71 | 17 | 0 | 1k+ | Output is not escaped | ||
| #868 | Webhook for Discord | 71 | 119 | 20 | 400 | Text Domain Mismatch | ||
| #869 | WP IE Buster | 71 | 13 | 3 | 800 | Output is not escaped | ||
| #870 | Auto Featured Image from Title | 72 | 24 | 4 | 1k+ | Setting is missing a sanitization callback | ||
| #871 | Call Now and Chat Buttons | 72 | 13 | 2 | 5k+ | Setting is missing a sanitization callback | ||
| #872 | Root Relative URLs | 72 | 9 | 10 | 6k+ | Input is not sanitized | ||
| #873 | Smartwaiver Waiver Widget | 72 | 17 | 8 | 400 | Output is not escaped | ||
| #874 | TinyPNG – JPEG, PNG & WebP image compression | 72 | 40 | 73 | 100k+ | Non-prefixed global variable | ||
| #875 | Albacross for WordPress | 73 | 18 | 5 | 1k+ | Text Domain Mismatch | ||
| #876 | Block Plugin Update | 73 | 9 | 10 | 6k+ | Missing direct file access protection | ||
| #877 | Infinite Notification – Sales Notification Plugin | 73 | 13 | 5 | 500 | Setting is missing a sanitization callback | ||
| #878 | Mortgage Calculators WP | 73 | 18 | 123 | 3k+ | Non-prefixed global variable | ||
| #879 | Website Optimization – Plerdy | 73 | 48 | 1 | 1k+ | wp function not compatible with requires wp | ||
| #880 | Popup for Contact Form 7 | 73 | 13 | 7 | 800 | Setting is missing a sanitization callback | ||
| #881 | Under Construction Light | 73 | 13 | 8 | 1k+ | Text Domain Mismatch | ||
| #882 | Datareporter Webcare | 74 | 12 | 21 | 700 | Non-prefixed global variable | ||
| #883 | Multiple Admin Email Addresses | 74 | 7 | 4 | 1k+ | Missing nonce verification | ||
| #884 | Simply Excerpts | 74 | 12 | 1 | 500 | Setting is missing a sanitization callback | ||
| #885 | Sticky Custom Post Types | 74 | 15 | 0 | 500 | Missing Arg Domain | ||
| #886 | Vello Booking Calendar | 74 | 10 | 2 | 500 | Unsafe printing function | ||
| #887 | WhatConverts | 74 | 10 | 10 | 7k+ | Non-prefixed function | ||
| #888 | Anchor Episodes Index (Spotify for Podcasters) | 75 | 32 | 3 | 1k+ | Text Domain Mismatch | ||
| #889 | Canvas Image Resize | 75 | 19 | 1 | 1k+ | Output is not escaped | ||
| #890 | Colored Admin Post List | 75 | 8 | 0 | 500 | Heredoc Output Not Escaped | ||
| #891 | Hum | 75 | 8 | 2 | 600 | wp function not compatible with requires wp | ||
| #892 | Simple Taxonomy Ordering | 75 | 7 | 10 | 10k+ | Direct Query | ||
| #893 | Ultimate Under Construction | 75 | 22 | 2 | 1k+ | Non Enqueued Script | ||
| #894 | WP Change Custom Posts Slugs | 75 | 17 | 4 | 700 | Text Domain Mismatch | ||
| #895 | AMS Google Webmaster Tools | 76 | 10 | 3 | 400 | Output is not escaped | ||
| #896 | Audience Analytics – by Quantcast | 76 | 17 | 3 | 1k+ | Text Domain Mismatch | ||
| #897 | Change Mail Sender | 76 | 97 | 19 | 20k+ | Text Domain Mismatch | ||
| #898 | Disable Lazy Load | 76 | 8 | 6 | 400 | Non-prefixed constant | ||
| #899 | Headers Security Advanced & HSTS WP | 76 | 19 | 10 | 90k+ | Missing Translators Comment | ||
| #900 | Page Loader | 76 | 9 | 4 | 3k+ | Missing Version |