NetterTech Events 1.0.1
v1.0.1
Remediation patch responding to WordPress.org plugin-review feedback. The reviewer flagged the nte prefix as too short (under 4 characters); this release renames every prefixed identifier in the plugin and bundles the corresponding database migration. Substantial diff for a patch release — treated as a remediation patch within the same review cycle rather than a feature release; no new functionality.
Changed
- All
nte_*prefixed identifiers renamed tonettertech_events_*(ornettertech-events-*for kebab-case): hooks, options, post/user/order-item meta keys (_nte_*→_nettertech_events_*), transients, AJAX action strings, nonces,$_POSTkeys, JS-localized variables, custom database table prefixes, cron hooks, and shortcodes ([nte_list]→[nettertech_events_list], etc.) - Custom post type slug:
nte_event→nettertech_event(16 characters; the originally-planned 23-character slug exceeded WordPress core’sregister_post_type()limit) - Taxonomy slugs:
nte_event_category→nettertech_event_category;nte_event_tag→nettertech_event_tag - REST base:
nte-events→nettertech-events(/wp-json/nettertech-events/...) - Style handle:
nte-public-ticket→nettertech-events-public-ticket
Added
PrefixMigrationManager— automatic Step 2 migration runs on plugin upgrade. Renames database tables (with conflict detection), updateswp_posts.post_typeandwp_term_taxonomy.taxonomy, migrates options and meta keys, classifies transients (cache vs stateful), reschedules cron hooks while preserving cadence, and rewrites shortcodes insidewp_posts.post_content- Read-only
preflight_inventory()dry-run reporter andverify()post-migration straggler check (admin diagnostic) - Block source files (
blocks/*/src/index.jsx) now ship alongside their compiled output (blocks/*/build/index.js) for WP.org guideline 4 compliance; readme.txt has a new “Source Code & Build” section pointing to the source files and giving the rebuild command (npm install && npm run build)
Fixed
- 13 sanitization sites across the addon plugins flagged by
WordPress.Security.ValidatedSanitizedInput(Rentals: 11; Seating: 2) — added explicitwp_unslash()andsanitize_text_field()chains at the access point uninstall.phpwas filtering shadow posts by a 23-char post-type slug that was never a live slug; now reads from the canonicalShadowPostType::POST_TYPEconstant so the filter stays in sync with the registered sluguninstall.phptransient cleanup was matching the pre-rename_transient_nte_%prefix and would have orphaned every post-1.0.1 transient on uninstall; pattern updated to match the post-migration prefix
Breaking
- Yoast SEO title-template variables renamed. The three custom variables registered via
wpseo_register_var_replacement()were updated from%%nte_event_date%%/%%nte_event_venue%%/%%nte_event_organizer%%to%%nettertech_events_event_date%%/%%nettertech_events_event_venue%%/%%nettertech_events_event_organizer%%. Sites with the legacy variable names in their Yoast title templates need to update those templates after the upgrade — the old names no longer resolve and Yoast renders the literal string. Rank Math equivalents were already on the new prefix and are unaffected.
Migration notes
- Migration runs automatically on plugin upgrade. Idempotent and lock-protected (600-second transient lock prevents parallel runs across admin/REST/cron processes).
- If both the old and new tables exist for any artifact, the migration logs the conflict and aborts rather than auto-merging — operators must resolve the conflict manually before re-running.
- MySQL DDL (
RENAME TABLE) is auto-commit; take awp db exportsnapshot before running on production data. - A site that has already migrated and wants to re-run can clear the completion flag with
wp option update nettertech_events_prefix_migration_complete ''before triggering the upgrade hook.
Requirements
- WordPress 6.5+
- PHP 8.2+
- WooCommerce 8.5+ (for ticketing)