Skip to content

release: 2.2.2 — Plugin Check compliance + security hardening#36

Merged
cport1 merged 4 commits into
mainfrom
release/2.2.2
Jul 20, 2026
Merged

release: 2.2.2 — Plugin Check compliance + security hardening#36
cport1 merged 4 commits into
mainfrom
release/2.2.2

Conversation

@cport1

@cport1 cport1 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Cuts 2.2.2, which ships the WordPress Plugin Check fixes to all channels and hardens the plugin for WordPress.org submission.

In this release

  • Plugin Check: 0 errors (was 69 before 2.2.1's fixes; verified with the real tool against the .org build).
  • Security hardening — every genuine input read now wp_unslash() + sanitized; read-only superglobal reads carry justified nonce ignores; all SQL values use $wpdb->prepare() (confirmed no user input reaches SQL — the only interpolations are $wpdb->prefix table names). Cleared 42 input/nonce/SQL Plugin Check warnings.
  • Guideline compliance: bundled Chart.js source documented (guideline 6); short description trimmed under 150 chars; jQuery uses WP's bundled copy; a default install makes zero external connections (all cloud calls gated behind an opt-in API key).
  • The 7.4 fatal (str_ends_with) and the rest of the 2.2.1 compliance work.

Remaining warnings (non-blocking, accepted)

333 warnings remain, all standard accepted categories: trusted $wpdb->prefix table-name interpolation (53), non-prefixed template variables (~140), and direct custom-table queries with caching notes (~138). None are documented rejection reasons.

php tests/run.php → 41 passed. Both builds verified (CDN includes updater+clearance; --org strips them).

cport1 added 4 commits July 20, 2026 17:10
Ships the WordPress Plugin Check compliance fixes (incl. the PHP 7.4 fatal in
good-bot verification) to all channels and keeps the .org submission version
coherent. Requires WordPress 6.1+, tested up to 7.0.
…once/SQL justifications)

Address all WordPress Plugin Check security warnings flagged for manual review:

- MissingUnslash / InputNotSanitized: wrap every flagged superglobal read in
  wp_unslash() + a type-appropriate sanitizer (sanitize_text_field/intval).
- NonceVerification: read-only contexts (honeypot signal, register-page
  detection, admin list GET filters) now unslash+sanitize and carry a
  justified phpcs:ignore explaining no state change occurs.
- InterpolatedNotPrepared (statistics-page, violation-reporter): only the
  $wpdb->prefix table name is interpolated; all values already use
  $wpdb->prepare() placeholders. Added justified phpcs:ignore. No user input
  reaches SQL.
- InputNotValidated (blocked-ips-page): justified phpcs:ignore for an isset
  presence check already guarded by nonce + capability and validated below.
- SDK (BotDetector, SignalCollector): keep the framework-agnostic WP-guarded
  form (wp_unslash+sanitize in WP, trim standalone) and extend the portability
  phpcs:ignore to cover MissingUnslash on the unavoidable standalone read.

No behavior change; 41/41 tests pass; php -l clean on all touched files.
@cport1
cport1 merged commit e6551c3 into main Jul 20, 2026
3 checks passed
@cport1
cport1 deleted the release/2.2.2 branch July 20, 2026 22:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant