How to Give Users Control Over Which Columns Are Visible

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

TableCrafter table builder, connect Gravity Forms, Google Sheets, Airtable, CSV, or JSON data sources
TableCrafter table builder, connect Gravity Forms, Google Sheets, Airtable, CSV, or JSON data sources

Not every user needs to see every column in your data table. TableCrafter's column visibility picker lets your site visitors show or hide individual columns on demand, reducing visual clutter without permanently removing any data. Whether you're displaying a dense trucking load manifest or a product catalog with dozens of attributes, this feature puts layout control directly in the hands of the people reading your tables. 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. WordPress plugin activation rates are highest in the first 48 hours after a feature update (WP Engine Developer Survey, 2024).

What Is the Column Visibility Picker?

The column visibility picker is a Pro feature that adds a button to the top of any TableCrafter table. When a visitor clicks it, a small dropdown panel appears listing every column by name. Each column has a checkbox. Toggling a checkbox immediately hides or shows that column without reloading the page.

This is purely a presentational control. Hiding a column does not delete data, exclude rows from filters, or affect exports. The full dataset remains intact in Gravity Forms (or your configured data source). If a user exports to CSV or Excel while a column is hidden, the behavior depends on your export settings, but by default the export includes all columns regardless of the current visibility state.

Note: Column visibility state is stored in the browser's session storage. If a user closes the tab or clears their session, columns reset to the default visibility you configured in the admin.

What Are the Requirements Before You Start?

Before enabling the column visibility picker, confirm your setup meets these requirements:

How Do I Enable the Column Visibility Picker in the Table Builder?

Open the table you want to configure by navigating to TableCrafter → Tables and clicking Edit on the row for your table. This opens the drag-and-drop table builder interface.

In the table builder, look for the Display Options tab or panel (the exact label may appear as "Table Options" depending on your version). Inside that panel you will find a toggle labeled Column Visibility Picker. Switch it on.

Once enabled, two additional sub-options appear:

After configuring these options, click Save Table. The settings are stored in the WordPress database and applied immediately to every place the table shortcode is used.

Tip: If you want to hide low-priority columns by default (such as internal IDs or timestamps) while keeping them accessible, add them to the Default Hidden Columns list. This keeps the initial view clean without removing functionality.

How Does Controlling Visibility Per Column Work?

Beyond the table-level toggle, each individual column has its own visibility setting. In the table builder's column list, click the gear icon on any column card to open its settings panel. Inside you will find a Visible by Default checkbox. Unchecking this has the same effect as adding the column to the Default Hidden Columns list, but it's managed column by column rather than in bulk.

You can also mark a column as Always Visible. This removes it from the picker dropdown entirely, preventing users from hiding it. Use this for columns that are essential for the table to make sense, such as an entry name, order number, or primary identifier. Locking a critical column prevents the awkward situation where a user hides the most important piece of information and then wonders why the table looks broken.

How Does Combining Visibility with Role-Based Permissions Work?

TableCrafter Pro supports both table-level and column-level role-based permissions, and these work alongside the visibility picker. A column that a user's role cannot access will never appear in the picker dropdown for that user. The picker only lists columns the current user is permitted to see.

For example, suppose you have a table with these columns: Driver Name, Load Weight, Delivery Address, Internal Cost, and Profit Margin. You configure the table so that only users with the administrator role can see Internal Cost and Profit Margin. When a driver-role user opens the table, the visibility picker will list Driver Name, Load Weight, and Delivery Address only. The financial columns are not hidden via the picker; they are absent from the permission set entirely, so no picker toggle exists for them.

Security note: Role-based column restrictions are enforced server-side. Even if a user inspects the DOM or makes a manual AJAX request, TableCrafter's nonce validation and capability checks prevent unauthorized column data from being returned.

This layered approach means you can simultaneously use visibility-based UX (letting users simplify their own view) and permission-based security (enforcing data access rules) without the two systems conflicting.

How Does Embedding the Table with the Shortcode Work?

The column visibility picker requires no special shortcode attribute to activate once you have enabled it in the table builder. Any of the standard shortcode aliases will display the picker button automatically:

[tablecrafter id="42"]
[tablecrafter id="42"]
[tablecrafter id="42"]

All three map to the same handler and will respect the visibility settings you configured for table ID 42.

If you want to temporarily disable the picker for one embed location without changing the table's global settings, there is no direct shortcode override for this in the current release. The recommended approach is to duplicate the table (TableCrafter → Tables → Duplicate) and disable the picker only on the duplicate, then use that duplicate's ID in the relevant shortcode.

Performance note: The column visibility picker is rendered entirely on the client side after the initial table load. There is no extra AJAX request to toggle column visibility. The column data for all permitted columns is included in the initial response; hidden columns are simply given a CSS display: none rule, which means toggling visibility is instant with zero additional server load.

How Do Testing and Troubleshooting Work?

After saving your table settings and loading the page with your shortcode, you should see a button labeled "Columns" (or your custom label) near the top-right of the table toolbar. Clicking it should reveal a dropdown with checkboxes for each non-locked column.

If the picker button does not appear, work through these checks in order:

If problems persist, enable WordPress debug logging (WP_DEBUG_LOG) and check wp-content/debug.log for any PHP notices originating from TableCrafter. The AJAX handlers log capability check failures that can reveal permission configuration issues not visible in the UI.

Frequently Asked Questions

What Is the Column Visibility Picker?

The column visibility picker is a Pro feature that adds a button to the top of any TableCrafter table. When a visitor clicks it, a small dropdown panel appears listing every column by name. Each column has a checkbox. Toggling a checkbox immediately hides or shows that column without reloading the page.

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.

The permission check runs server-side on every request. Frontend users cannot bypass column restrictions by modifying the HTML or disabling JavaScript, because TableCrafter evaluates the current user's role before the data leaves the server.

The configuration you set here applies to every visitor who loads a page containing this table, regardless of whether they are logged in. Role-specific overrides for columns and rows are a separate layer and do not replace these global display settings. Apply global settings first, then add role restrictions as needed for tables that serve multiple user types.