This usually happens for MySQL-based tables with server-side processing turned on.

Please check if you have a complicated query with JOINs, calculated columns (e.g. ” SELECT mycolumn*2 AS mycolumn2″), or some custom column aliases (e.g. “SELECT mycolumn AS ‘some/weird/name’). If this is the case, please either create a MySQL view (in PHPMyAdmin or similar MySQL DB manager) and build a wpDataTable based on this view.

If you like to have invisible columns in filters, that can be achieved by enabling “Filter in form” option in table edit page.
“Filter in form” option will create filters as a separate section from the table and additionally show filters for all hidden columns.
You can choose which column filter will be visible/hidden by unchecking/checking the Add a filter for this column button in the column settings for desired column.

Tables can be filtered with query string that consists of “wdtColumnFilter[KEY]” value pairs where KEY is zero based numerical index of the column you would like to filter or initial column header. E.g.


Values passed from URL will be used as default filter values therefore “Advanced filtering” option needs to be enabled on table edit page.