Description
Bulk Content Toolkit adds any custom meta field to the native WordPress Quick Edit row and Bulk Edit panel — automatically, without writing a single line of code.
Most bulk edit plugins hardcode which fields they support. Bulk Content Toolkit reads your actual database and exposes every meta field that exists on your site, regardless of which plugin created it.
How it works
- Go to Settings Bulk Edit.
- Pick a post type (products, courses, pages, custom types…).
- Move the fields you want into the “Selected Fields” column.
- Save — those fields now appear in Quick Edit and Bulk Edit inside the native WordPress UI.
Works with everything
Because the plugin reads directly from wp_postmeta, it works with any field from any plugin — without any integration code:
- WooCommerce: _price, _sale_price, _stock_status, _manage_stock, _tax_status, and all product meta
- LearnPress: _lp_price, _lp_coming_soon, _lp_max_students, _lp_passing_condition, and all course meta
- ACF (Advanced Custom Fields): any field saved to post meta
- Elementor, WPML, Yoast SEO, and any other plugin that writes to wp_postmeta
Automatic field type detection
The plugin samples your existing data and infers the correct input type — checkbox, select, number, date, color, URL, textarea, and more. Common WooCommerce and LearnPress fields are hardcoded to their correct type.
100% native
No new UI to learn. No external spreadsheet. No CSV. Fields appear in Quick Edit and Bulk Edit exactly where WordPress users already expect them.
Installation
- Upload the plugin folder to /wp-content/plugins/ or install via Plugins Add New.
- Activate the plugin.
- Go to Settings Bulk Edit and select which fields to expose for each post type.
FAQ
-
Does this work with WooCommerce product fields?
-
Yes. Switch the post type to “Products” in the settings and you will see every WooCommerce meta key — price, stock, tax status, sale dates — ready to add to your Bulk Edit panel.
-
Does this work with custom post types?
-
Yes. All registered public post types appear in the selector automatically.
-
Can I undo bulk changes?
-
The plugin does not store undo history. Use it alongside a backup plugin. The Bulk Edit panel always defaults to “— No change —” so you cannot accidentally overwrite fields you did not intend to touch.
-
How does field type detection work?
-
The plugin samples existing meta values and uses an 80% vote threshold to infer the type. Common WooCommerce and LearnPress fields are hardcoded so they always render correctly.
-
What if a field shows the wrong input type?
-
Remove the field from Selected Fields and re-add it. The plugin will re-sample your data.
Contributors & Developers
“Bulk Content Toolkit” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Bulk Content Toolkit” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.4.3
- Fix: WooCommerce is optional; removed WC requires at least header.
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).
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.
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.
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().
1.2.9
- Compatibility: Verified and bumped tested up to WordPress 6.9.
1.2.8
- Fix: Select tag gathered with wrong method in bulk edit.
1.2.7
- Fix: Select and switch fields definitively handled in bulk edit.
1.2.5
- Fix: CSS was overstepping its own scope due to a bad condition.
1.2.4
- Fix: “No Change” option for select fields in bulk edit now correctly prevents unintended updates.
1.2.2
- Improvement: Clearer bulk edit interface.
1.2.1
- Fix: Select fields now require at least two distinct values to display as a select input.
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.
1.1.0
- Improvement: Styling for toggle switches and select fields.
- Fix: Select fields rendering incorrectly in quick edit row.
1.0.0
- Initial release.
