*** Bulk Content Toolkit Changelog *** 2026-05-20 - version 1.4.3 * Fix: WooCommerce is optional; removed WC requires at least header. 2026-05-20 - version 1.4.2 * Bump: WP V7 * Fix: Bulk edit switches no longer double-prefix field names (custom_custom__*) — mixed yes/no now shows centered indeterminate state and saving without clicking leaves posts unchanged. * Fix: Indeterminate switch styling via .bct-indeterminate class (works when native :indeterminate is not painted). * Fix: PHP bulk checkbox save ignores any submitted value other than yes, no, or indeterminate. * Improvement: More WooCommerce internal meta keys blocked from the field picker. * Cleanup: Removed unused files (display.php, admin.js, bulk-actions.php, core-functions.php) and dead bulk-actions dropdown hooks. * Dev: Central debug helper (bulkedittoolkit_log) — single PHPCS ignore; JS logs gated by UserScriptParams.debug (WP_DEBUG or BULKEDITTOOLKIT_DEBUG). 2026-05-19 - version 1.4.1 * Fix: Quick edit checkbox now uses a hidden input — unchecking reliably submits 'no' instead of being silently ignored. * Fix: LearnPress boolean fields (_lp_coming_soon and 12 others) now write '' for false instead of 'no', matching LearnPress native storage convention. * Fix: WooCommerce boolean fields normalized to 'yes'/'no' on write. * Fix: Switch pre-population in quick edit now updates the hidden input, not just the visual checkbox. * Fix: Delegated click handler keeps hidden input in sync with checkbox state after user interaction. 2026-05-19 - version 1.4.0 * New: **Field Search** — live filter input above the Available Fields list on the settings page. Instantly narrows down fields by name, useful on sites with 50+ meta keys. 2026-05-16 - version 1.3.0 * Security: Replaced all wp_redirect() with wp_safe_redirect() + exit. * Security: Added isset() + wp_unslash() on all $_POST/$_REQUEST accesses before sanitization. * Security: Removed unauthenticated AJAX hook on get_bulk_edit_statuses. * Security: Fixed SQL injection risk — table names now passed through esc_sql(). * Security: Added explicit nonce verification on the quick edit save path. * Fix: Fatal PHP error in checkbox type detection — missing $ on variable name, checkbox auto-detection was completely broken. * Fix: Double-prefix bug on checkbox field key in bulk save — unchecking a field in bulk edit had no effect. * Fix: Hidden input and checkbox no longer share the same name attribute — unchecking now saves correctly. * Fix: Select "no change" logic — empty string now correctly skips the field. * Fix: date() replaced with gmdate() in 8 places to avoid runtime timezone drift. * Fix: i18n placeholders in _n() corrected, missing translators comment added. * **Mixed State Checkboxes**: Initializes to indeterminate when selected posts have different values. Saving without touching leaves all posts unchanged. * **Mixed State Selects**: Initializes to "— No change —" when values differ. Saving without changing leaves all posts unchanged. * **Quick Edit Pre-population**: All field types now load the post's current value when the row opens. * **Column Display**: Checkboxes show a dashicon, dates use WP date format, long text truncated at 40 chars, URLs show domain only. * **Screen Options**: Each column can be individually shown/hidden per user via the native WP Screen Options panel. * **Field Discovery**: Rewritten with a single SQL JOIN + DISTINCT — dramatically faster on large catalogs. * **Settings Cache**: wp_cache_get/set with 5 min TTL — settings table no longer queried on every page load. * **Field Type System**: New field-types.php centralizes known_types and blocked_keys registries. * **Type Sampler**: Rewritten with 80% vote threshold — a single outlier no longer causes a field to be mistyped. * **i18n**: All hardcoded strings replaced with English base strings via __() and esc_html_e(). 2025-10-01 - version 1.2.9 * Compatibility: Verified and bumped tested up to WordPress 6.9. 2025-09-15 - version 1.2.8 * Fix: Select tag gathered with wrong method in bulk edit. 2025-09-10 - version 1.2.7 * Fix: Select and switch fields definitively handled in bulk edit. 2025-09-01 - version 1.2.5 * Fix: CSS was overstepping its own scope due to a bad condition. 2025-08-28 - version 1.2.4 * Fix: "No Change" option for select fields in bulk edit now correctly prevents unintended updates. 2025-08-27 - version 1.2.2 * Improvement: Clearer bulk edit interface. 2025-08-26 - version 1.2.1 * Fix: Select fields now require at least two distinct values to display as a select input. 2025-08-25 - version 1.2.0 * New: **Known Types System** — hardcoded map of WooCommerce and LearnPress meta keys to their correct input type. * New: Reset and Rebuild button — remove and re-add a field to force type re-detection. * Improvement: AJAX handling for Quick Edit reworked. 2025-08-24 - version 1.1.0 * Improvement: Styling for toggle switches and select fields. * Fix: Select fields rendering incorrectly in quick edit row. 2025-08-22 - version 1.0.0 * Initial release.