How to Enable Bulk Row Deletion in a WordPress Table

Updated July 2026 • 6 min read • By Fahad Murtaza • By Fahad Murtaza

TableCrafter inline spreadsheet-style editing on the frontend, click any cell to edit
TableCrafter inline spreadsheet-style editing on the frontend, click any cell to edit

Managing large datasets in WordPress means you occasionally need to remove multiple rows at once, without clicking through each entry one by one. TableCrafter's bulk delete feature lets site admins and authorized roles wipe out dozens of records in a single action, straight from the frontend table, no WP admin or PHPMyAdmin required. WordPress powers 43% of all websites globally (W3Techs, July 2026), and TableCrafter bridges the gap between the data you collect and the tables your users need to see, no custom PHP, no dashboard access required for viewers. The free version on WordPress.org supports CSV, JSON, Google Sheets, and Excel. Pro adds Gravity Forms, Airtable, Notion, WooCommerce, REST APIs, inline cell editing, export to CSV/PDF, role-based column visibility, and auto-refresh. Every table embeds on any page with a [tablecrafter] shortcode or the native Gutenberg block. Frontend editing reduces admin support requests by an average of 42% in multi-user WordPress environments (WP Buffs, 2024).

What Is Bulk Row Deletion?

Bulk row deletion is a Pro bulk action that renders a checkbox column on the left side of your table. Visitors with the right role can select one or more rows, then choose Delete from the bulk actions dropdown and confirm. TableCrafter issues a single AJAX call to wp-admin/admin-ajax.php, validates the nonce and capability, then removes each selected Gravity Forms entry via the GF API in one pass.

Because every delete request goes through nonce validation and a capability check on the server, entries can only be removed by users who have been explicitly granted permission in the table's role-based permission settings. Anonymous visitors never see the checkbox column.

Note: Bulk deletion permanently removes Gravity Forms entries. TableCrafter does not move them to a trash state, make sure you have a backup or an export before running a bulk delete on production data.

What Are the Requirements Before You Start?

Before enabling bulk deletion, confirm you have the following in place:

Free tier limits: The free tier supports unlimited tables, columns, and rows from JSON, CSV, Google Sheets, and Excel sources with read-only display. Upgrade to Pro for bulk actions, inline editing, and role-based permissions.

How Does Step 1, Enable Bulk Actions in the Table Builder Work?

Navigate to TableCrafter → Tables in your WordPress admin, then click the table you want to configure. The table builder opens with a set of tabbed settings panels.

Find the Bulk Actions section, it is typically in the Features or Actions tab depending on your plugin version. Toggle Enable Bulk Actions on. You will see a set of checkboxes for the individual action types. Enable Delete. You can also enable Export and Column Fill at the same time if needed, but they are independent, enabling delete does not require the others.

Save the table configuration. TableCrafter stores the bulk action settings in the table's configuration record in the WordPress database, keyed to the table ID.

Tip: If you enable bulk delete but do not configure role permissions (Step 2 below), no frontend user will be able to use it. Always set permissions alongside enabling the action.

How Does Step 2, Configure Role-Based Permissions for Delete Work?

TableCrafter enforces permissions at two levels: table-level (who can see and interact with the table) and column-level (who can edit specific columns). For bulk deletion, table-level permission is what matters.

Still inside the table builder, open the Permissions tab. You will find two main controls:

Add the roles you want to grant delete access to the Edit/Action Roles field. Common choices are administrator and editor. For the AJS Trucking use case or similar fleet apps, you might add a custom role like fleet_manager.

Users whose WordPress role is not in the allowed list will see the table as read-only, no checkboxes, no bulk actions dropdown. The capability check runs server-side on every AJAX request, so a user cannot bypass this by manipulating the DOM.

Save the table again after setting permissions.

// Example: checking which roles are active on a table
// TableCrafter stores this in wp_options as serialized config per table ID
// You do not need to touch this manually, the builder handles it.
// But for debugging, you can inspect:
get_option( 'tablecrafter_table_' . $table_id );

How Does Step 3, Embed the Table with a Shortcode Work?

Add the table to any page, post, or widget area using one of the supported shortcodes. All three map to the same handler:

[tablecrafter id="X"]
[tablecrafter id="X"]
[tablecrafter id="X"]

Replace X with your table's numeric ID, visible in the table list under TableCrafter → Tables. TableCrafter will render the table with the bulk checkbox column automatically for users who meet the permission requirements, and without it for everyone else.

You do not need any extra shortcode attributes to activate bulk delete, enabling it in the builder is sufficient. However, if you want to restrict the table to logged-in users only at the shortcode level, you can wrap it in a conditional block using your theme or a membership plugin.

Shortcode note: All three shortcode variants ([tablecrafter], [tablecrafter], [tablecrafter]) are fully equivalent. Use whichever matches your existing content to avoid having to update old embeds.

How Does Step 4, Test the Bulk Delete Flow Work?

Log in to the frontend with a WordPress account that has one of the permitted roles. Navigate to the page containing your table. You should see:

Select two or three test rows and choose Delete. TableCrafter will show a confirmation prompt before proceeding. Confirm, and the rows disappear from the table. In the background, TableCrafter sent an AJAX request to wp-admin/admin-ajax.php with the entry IDs, the table ID, a nonce, and the action name. The server validated the nonce, verified the current user has the required role, then called the Gravity Forms API to delete each entry.

Verify the entries are gone by opening Gravity Forms → Entries in WP admin and searching for the same form. The deleted entries should not appear there either.

Troubleshooting: If the checkboxes do not appear, first confirm you saved the table config with bulk delete enabled. Then check that your logged-in user's role appears in the Edit/Action Roles list. If checkboxes appear but the delete action fails with a permissions error in the browser console, your AJAX nonce may be stale, try a hard refresh to regenerate it.

How Do Common Questions and Edge Cases Work?

Can I limit bulk delete to specific columns or filters? Bulk delete acts on entire rows (entries), not individual columns. You can narrow which rows appear in the table using TableCrafter's advanced filters, which effectively limits what a user can select for deletion.

Does bulk delete work with all data sources? Bulk delete is currently supported for Gravity Forms data sources. Tables connected to Google Sheets, REST API, Airtable, or WooCommerce as their primary source do not support bulk delete through TableCrafter, those data sources have their own deletion APIs and the feature has not been wired to them yet.

What happens to related entries or file uploads? TableCrafter calls GFAPI::delete_entry() for each selected entry ID. Gravity Forms' own delete logic handles cleanup of associated file uploads according to your GF settings. No additional cleanup is needed inside TableCrafter.

Can I restore deleted entries? No. There is no undo. TableCrafter does not implement a soft-delete or recycle bin. If you need recoverability, export a CSV backup before running bulk deletions, or configure Gravity Forms to use its own trash functionality before the entries reach TableCrafter.

How many rows can I delete at once? There is no hard cap enforced by TableCrafter on the number of selected rows, but very large bulk deletes (hundreds of entries at once) may hit PHP execution time limits depending on your server configuration. For large cleanups, consider paginating your selection across multiple smaller bulk operations.

Frequently Asked Questions

What Is Bulk Row Deletion?

Bulk row deletion is a Pro bulk action that renders a checkbox column on the left side of your table. Visitors with the right role can select one or more rows, then choose Delete from the bulk actions dropdown and confirm. TableCrafter issues a single AJAX call to wp-admin/admin-ajax.php, validates the nonce and capability, then removes each selected Gravity Forms entry via the GF API in one pass.

What Is TableCrafter?

TableCrafter is a WordPress plugin that turns data from Gravity Forms, Google Sheets, Airtable, Notion, REST APIs, CSV files, and WooCommerce into interactive, sortable, filterable frontend tables. Embed any table on any WordPress page with the [tablecrafter] shortcode or the native Gutenberg block. No PHP or custom development required. The free version supports CSV, JSON, Google Sheets, and Excel. Pro adds Gravity Forms, Airtable, Notion, WooCommerce, REST APIs, inline cell editing, export to CSV and PDF, role-based column visibility, and auto-refresh.

Does this require PHP or developer skills?

No. TableCrafter is configured entirely through the WordPress admin interface. You choose your data source, map fields to columns, and set display preferences using point-and-click controls. Embedding uses the [tablecrafter] shortcode or the native Gutenberg block.

Is the free version sufficient or do I need Pro?

The free plugin on WordPress.org supports CSV, JSON, Google Sheets, and Excel sources with unlimited tables, rows, and columns. Pro adds Gravity Forms, Airtable, Notion, WooCommerce, REST API sources, inline cell editing, bulk row actions, export to CSV and PDF, role-based column visibility, and auto-refresh every N seconds.

Ready to try it?

TableCrafter is free on WordPress.org. Pro unlocks inline editing, role-based permissions, and advanced data sources.