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 |
|---|---|---|---|---|---|---|---|---|
| #901 | Page Loader | 76 | 9 | 4 | 3k+ | Missing Version | ||
| #902 | Custom Cursor For WP | 77 | 10 | 7 | 1k+ | Setting is missing a sanitization callback | ||
| #903 | Disable Toolbar | 77 | 6 | 3 | 1k+ | Output is not escaped | ||
| #904 | Floating Contact Button | 77 | 6 | 3 | 1k+ | Output is not escaped | ||
| #905 | Gravity Forms Auto Placeholders | 77 | 9 | 8 | 700 | trademarked term | ||
| #906 | Ilmenite Cookie Consent | 77 | 6 | 11 | 2k+ | Setting is missing a sanitization callback | ||
| #907 | Toggle wpautop | 77 | 4 | 15 | 9k+ | trademarked term | ||
| #908 | WP Comment Notification | 77 | 28 | 10 | 400 | Missing Arg Domain | ||
| #909 | WP Upload Size | 77 | 6 | 14 | 2k+ | Non-prefixed function | ||
| #910 | Floating Ads Bottom | 78 | 9 | 1 | 2k+ | Setting is missing a sanitization callback | ||
| #911 | Uptime Monitoring for WordPress – My Website is Online | 78 | 18 | 7 | 500 | Text Domain Mismatch | ||
| #912 | PushCrew | 78 | 10 | 0 | 400 | Missing Arg Domain | ||
| #913 | Simple Universal Google Analytics | 78 | 11 | 0 | 4k+ | Output is not escaped | ||
| #914 | Yandex Mail SMTP Server for WordPress | 78 | 16 | 5 | 2k+ | Text Domain Mismatch | ||
| #915 | WP Simple Mail Sender | 78 | 21 | 6 | 3k+ | Non Singular String Literal Domain | ||
| #916 | AIKO – AI Developer Lite | 79 | 10 | 7 | 6k+ | error log error log | ||
| #917 | Chatra Live Chat + ChatBot + Cart Saver | 79 | 11 | 1 | 3k+ | Output is not escaped | ||
| #918 | Global Site Tag Tracking | 79 | 11 | 1 | 1k+ | Output is not escaped | ||
| #919 | Grabber for QQWorld Auto Save Images | 79 | 17 | 3 | 500 | Non Singular String Literal Domain | ||
| #920 | Flutterwave Payments | 79 | 8 | 39 | 600 | Non-prefixed global variable | ||
| #921 | Yandex Mail | 79 | 16 | 4 | 400 | Non Singular String Literal Domain | ||
| #922 | Custom Icons for Elementor | 80 | 6 | 25 | 10k+ | Non-prefixed global variable | ||
| #923 | Parallax Image | 80 | 6 | 1 | 2k+ | Missing direct file access protection | ||
| #924 | Re-add text underline and justify | 80 | 10 | 2 | 50k+ | Output is not escaped | ||
| #925 | SteadFast API | 80 | 2 | 23 | 8k+ | Non-prefixed global variable | ||
| #926 | Folder Excluder for AIO WP Migration | 81 | 8 | 5 | 1k+ | Non-prefixed function | ||
| #927 | AWEOS Google Maps iframe load per click | 81 | 11 | 7 | 3k+ | Text Domain Mismatch | ||
| #928 | Disable Post Revision | 81 | 6 | 3 | 3k+ | Output is not escaped | ||
| #929 | JivoChat Live Chat – WP live chat plugin for WordPress | 81 | 27 | 13 | 20k+ | wp function not compatible with requires wp | ||
| #930 | Pagebar2 | 81 | 19 | 37 | 900 | Non-prefixed global variable | ||
| #931 | Simple Site Map Page | 81 | 9 | 1 | 4k+ | Output is not escaped | ||
| #932 | Siteimprove | 81 | 6 | 23 | 700 | Nonce verification recommended | ||
| #933 | Bulk Order Form for WooCommerce | 81 | 8 | 98 | 900 | Non-prefixed hook name | ||
| #934 | WP GIF Player – Play & Pause | 81 | 6 | 4 | 400 | Output is not escaped | ||
| #935 | Already Existing Tags | 82 | 8 | 1 | 500 | Setting is missing a sanitization callback | ||
| #936 | Clean Image Filenames | 82 | 6 | 1 | 30k+ | Output is not escaped | ||
| #937 | CodePen Embed Block | 82 | 8 | 3 | 600 | Text Domain Mismatch | ||
| #938 | Search box on Navigation Menu | 82 | 22 | 3 | 500 | Text Domain Mismatch | ||
| #939 | Code Click to Copy | 83 | 12 | 9 | 700 | Non-prefixed function | ||
| #940 | Make Disable Admin Email Verification Prompt| Aims Infosoft | 83 | 10 | 4 | 2k+ | Text Domain Mismatch | ||
| #941 | Easy Photography Portfolio | 83 | 38 | 33 | 2k+ | Missing direct file access protection | ||
| #942 | Append extensions on Pages | 84 | 7 | 3 | 800 | Missing direct file access protection | ||
| #943 | Crazy Egg | 84 | 12 | 1 | 7k+ | wp function not compatible with requires wp | ||
| #944 | Events Calendar for Google | 84 | 13 | 8 | 2k+ | Missing direct file access protection | ||
| #945 | Stape Conversion Tracking | 84 | 23 | 4 | 10k+ | Non Singular String Literal Domain | ||
| #946 | wpautop control | 84 | 7 | 5 | 1k+ | trademarked term | ||
| #947 | DCO Comment Attachment | 85 | 5 | 5 | 5k+ | Missing nonce verification | ||
| #948 | Genesis Easy Columns | 85 | 8 | 1 | 2k+ | Missing direct file access protection | ||
| #949 | Consent Mode Banner | 85 | 3 | 7 | 400 | Missing Version | ||
| #950 | Pronamic Google Maps | 85 | 24 | 18 | 1k+ | Non-prefixed global variable |