This page documents the functions, options, parameters, and advanced usage of TablePress. For general information about the plugin, please see the Plugin Info page. If you need help, please check the Frequently Asked Questions page as well.
The “TablePress table” editor block
When editing posts or pages, use the “TablePress table” block in the WordPress block editor to insert TablePress tables that you have created or imported.
You will be shown a dropdown to select the desired table, as well as an “Advanced” section with a field for Configuration parameters”. You can find a screenshot below. Several TablePress premium features modules will also add dedicated configuration sections to the block’s Settings sidebar.
See the Configuration parameter reference for a list of available configuration parameters.
The Shortcode [table id=N /]
The Shortcode
[table id=N /]
Code language: JSON / JSON with Comments (json)
can be used to display a table in a post, on a page, or in a text widget, in cases where using the “TablePress table” block is not possible or desired. While editing the content into which a table shall be embedded, the Shortcode serves as a placeholder for that table.
See the Configuration parameter reference for a list of available Shortcode parameters.
The Shortcode accepts different parameters which customize and configure the table that will be printed in the place of the Shortcode. Shortcode parameters follow the syntax name=value
and can be added in arbitrary order, like
[table id=1 alternating_row_colors=false table_head=0 /]
Code language: JSON / JSON with Comments (json)
The id
parameter is required, as it defines which table is to be shown. All other parameters are optional. If a parameter is added, it overwrites the corresponding Table Option from the “Edit” screen of that table. For most use cases, it is recommended to change the setting in question by using the corresponding checkbox on the “Edit” screen of the table.
All available Shortcode parameters are documented in the Configuration parameter reference.
Configuration parameter reference
All versions of TablePress support the following basic configuration parameters, both in the “TablePress Table” block in the editor as well as when using the [table id=N /]
Shortcode. The supported configuration parameters of the TablePress premium feature modules are shown below.
In addition, the different features modules in the TablePress premium versions support these configuration parameters:
Module | Slug | Configuration parameter | Name | Description | Type | Default value | |
---|---|---|---|---|---|---|---|
Advanced Loading | datatables-advanced-loading | datatables_advanced_loading | boolean (true or false ) | false | |||
Advanced Loading | datatables-advanced-loading | datatables_advanced_loading_html_rows | integer | 10 | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_firstlast | boolean (true or false ) | false | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_previousnext | boolean (true or false ) | true | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_numbers | boolean (true or false ) | true | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_input | boolean (true or false ) | false | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_input_pageof | boolean (true or false ) | true | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_buttons | integer | 7 | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_boundarynumbers | boolean (true or false ) | true | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_scrolltotop | boolean (true or false ) | false | |||
Advanced Pagination Settings | datatables-pagination | datatables_pagination_scrolltotop_offset | integer | 10 | |||
Alphabet Search | datatables-alphabetsearch | datatables_alphabetsearch | boolean (true or false ) | false | |||
Alphabet Search | datatables-alphabetsearch | datatables_alphabetsearch_column | string | 1 | |||
Alphabet Search | datatables-alphabetsearch | datatables_alphabetsearch_alphabet | enum (latin or greek ) | latin | |||
Alphabet Search | datatables-alphabetsearch | datatables_alphabetsearch_numbers | boolean (true or false ) | false | |||
Alphabet Search | datatables-alphabetsearch | datatables_alphabetsearch_letters | boolean (true or false ) | true | |||
Alphabet Search | datatables-alphabetsearch | datatables_alphabetsearch_case_sensitive | boolean (true or false ) | false | |||
Automatic Filter | datatables-auto-filter | datatables_auto_filter | string | "" (empty string) | |||
Automatic Filter | datatables-auto-filter | datatables_auto_filter_url_parameter | string | "" (empty string) | |||
Buttons | datatables-buttons | datatables_buttons | string | "" (empty string) | |||
Cell Highlighting | cell-highlighting | highlight | Cell Highlight term | Cells that contain this term will be highlighted. You can combine multiple highlight terms with an OR operator, e.g. term1||term2 or term1&&term2 . | string | "" (empty string) | |
Cell Highlighting | cell-highlighting | highlight_full_cell_match | Full cell matching | If this is true , the full cell content has to match the highlight term. | boolean (true or false ) | false | |
Cell Highlighting | cell-highlighting | highlight_case_sensitive | Case-sensitive matching | If this is true , the case sensitivity of the highlight term has to match the content in the cell. | boolean (true or false ) | false | |
Cell Highlighting | cell-highlighting | highlight_columns | Highlight columns | A comma-separated list of the columns which should be searched for the highlight terms, e.g. 1,3-5,7 . By default, all columns will be searched. | string | "" (empty string) // "" equates to 'all'. | |
Cell Highlighting | cell-highlighting | highlight_url_parameter | Cell Highlight URL parameter | This allows providing the Cell Highlight term in a URL parameter. | string | "" (empty string) | |
Column Filter Dropdowns | datatables-columnfilterwidgets | datatables_columnfilterwidgets | boolean (true or false ) | false | |||
Column Filter Dropdowns | datatables-columnfilterwidgets | datatables_columnfilterwidgets_columns | string | "" (empty string) | |||
Column Filter Dropdowns | datatables-columnfilterwidgets | datatables_columnfilterwidgets_exclude_columns | string | "" (empty string) | |||
Column Filter Dropdowns | datatables-columnfilterwidgets | datatables_columnfilterwidgets_separator | string | "" (empty string) | |||
Column Filter Dropdowns | datatables-columnfilterwidgets | datatables_columnfilterwidgets_max_selections | string | "" (empty string) | |||
Column Filter Dropdowns | datatables-columnfilterwidgets | datatables_columnfilterwidgets_group_terms | boolean (true or false ) | false | |||
Column Order | column-order | column_order | enum (default , reverse , or manual ) | default | |||
Column Order | column-order | column_order_manual_order | string | "" (empty string) | |||
Custom Search Builder | datatables-searchbuilder | datatables_searchbuilder | boolean (true or false ) | false | |||
Fixed Columns | datatables-fixedheader-fixedcolumns | datatables_fixedcolumns | string | "" (empty string) | |||
Fixed Columns | datatables-fixedheader-fixedcolumns | datatables_fixedcolumns_left_columns | integer | 0 | |||
Fixed Columns | datatables-fixedheader-fixedcolumns | datatables_fixedcolumns_right_columns | integer | 0 | |||
Fixed Columns | datatables-fixedheader-fixedcolumns | datatables_scrollx_buttons | boolean (true or false ) | false | |||
Fixed Rows | datatables-fixedheader-fixedcolumns | datatables_fixedheader | string | "" (empty string) | |||
Fixed Rows | datatables-fixedheader-fixedcolumns | datatables_fixedheader_offsettop | integer | 0 | |||
Fuzzy Search | datatables-fuzzysearch | datatables_fuzzysearch | boolean (true or false ) | false | |||
Fuzzy Search | datatables-fuzzysearch | datatables_fuzzysearch_threshold | float | 0.5 | |||
Fuzzy Search | datatables-fuzzysearch | datatables_fuzzysearch_togglesmart | boolean (true or false ) | true | |||
Fuzzy Search | datatables-fuzzysearch | datatables_fuzzysearch_rankcolumn | string | "" (empty string) | |||
Index Column | datatables-counter-column | datatables_counter_column | boolean (true or false ) | false | |||
Individual Column Filtering | datatables-column-filter | datatables_column_filter | string | "" (empty string) | |||
Individual Column Filtering | datatables-column-filter | datatables_column_filter_position | enum (table_head or table_foot ) | table_head | |||
Individual Column Filtering | datatables-column-filter | datatables_column_filter_columns | string | "" (empty string) | |||
Inverted Filtering | datatables-inverted-filter | datatables_inverted_filter | boolean (true or false ) | false | |||
Responsive Tables | responsive-tables | responsive | string | "" (empty string) | |||
Responsive Tables | responsive-tables | responsive_breakpoint | enum (phone , tablet , desktop , or all ) | phone | |||
Responsive Tables | responsive-tables | responsive_scroll_buttons | boolean (true or false ) | false | |||
Row Filtering | row-filtering | filter | string | "" (empty string) | |||
Row Filtering | row-filtering | filter_full_cell_match | boolean (true or false ) | false | |||
Row Filtering | row-filtering | filter_case_sensitive | boolean (true or false ) | false | |||
Row Filtering | row-filtering | filter_columns | string | "" (empty string) // "" equates to 'all'. | |||
Row Filtering | row-filtering | filter_inverse | boolean (true or false ) | false | |||
Row Filtering | row-filtering | filter_url_parameter | string | "" (empty string) | |||
Row Grouping | datatables-rowgroup | datatables_rowgroup | boolean (true or false ) | false | |||
Row Grouping | datatables-rowgroup | datatables_rowgroup_datasrc | string | 1 | |||
Row Highlighting | row-highlighting | row_highlight | string | "" (empty string) | |||
Row Highlighting | row-highlighting | row_highlight_full_cell_match | boolean (true or false ) | true | |||
Row Highlighting | row-highlighting | row_highlight_case_sensitive | boolean (true or false ) | false | |||
Row Highlighting | row-highlighting | row_highlight_columns | // "" equates to 'all'. | string | "" (empty string) | ||
Row Highlighting | row-highlighting | row_highlight_rows | // "" equates to 'all'. | string | "" (empty string) | ||
Row Highlighting | row-highlighting | row_highlight_url_parameter | string | "" (empty string) | |||
Row Order | row-order | row_order | enum (default , reverse , sort , or manual ) | default | |||
Row Order | row-order | row_order_sort_column | string | "" (empty string) | |||
Row Order | row-order | row_order_sort_direction | enum (asc or desc ) | asc | |||
Row Order | row-order | row_order_manual_order | string | "" (empty string) | |||
Search Highlighting | datatables-searchhighlight | datatables_searchhighlight | boolean (true or false ) | false | |||
Search Panes | datatables-searchpanes | datatables_searchpanes | boolean (true or false ) | false | |||
Search Panes | datatables-searchpanes | datatables_searchpanes_columns | string | "" (empty string) | |||
Server-side Processing | datatables-serverside-processing | datatables_serverside_processing | boolean (true or false ) | false | |||
Server-side Processing | datatables-serverside-processing | datatables_serverside_processing_cached_pages | integer | 0 | |||
Server-side Processing | datatables-serverside-processing | datatables_serverside_processing_periodic_refresh | integer | 0 | |||
Server-side Processing | datatables-serverside-processing | datatables_serverside_processing_request_type | enum (GET or POST ) | GET | |||
Server-side Processing | datatables-serverside-processing | datatables_serverside_processing_html_rows | This is only a Shortcode parameter, but not part of the user interface. By default, the value of the datatables_paginate_entries value is used. | string | "" (empty string) | ||
Table Layout | datatables-layout | datatables_layout | Table Layout | This parameter allows changing the Table Layout, by returning an object in JSON notation, e.g. as datatables_layout='{...}' .However, as Shortcode parameters can not contain [ or ] characters that denote arrays in JSON, setting a different layout is only possible if only one control element should be shown per feature position.Due to the JSON requirement, the JSON object string must be wrapped in single quotes ' for WordPress to properly recognize the parameter.Example: The configuration parameter datatables_layout='{"top":"search", "topStart":null, "topEnd":null, "bottomStart":"paging", "bottomEnd":null}' will move the "Search" field to the top center position and only keep the Pagination controls below the table.For more details, see the DataTables documentation. | string | "" (empty string) |
The Shortcode [table-info id=N /]
The Shortcode
[table-info id=N field=<field-name> /]
Code language: JSON / JSON with Comments (json)
can be used to display table meta data in a post, page, or text widget. While editing the content into which the Shortcode is embedded, it serves as a placeholder for that meta information.
The Shortcode supports three parameters:
Examples for using this Shortcode
The table [table-info id=2 field=name /] was last modified at [table-info id=2 field=last_modified format=raw /] by [table-info id=2 field=last_editor /].
Code language: HTML, XML (xml)
will produce something similar to
The table Demo Table was last modified at 2024-11-12 15:20:21 by TobiasBg.
Code language: HTML, XML (xml)
There’s a also a Template Tag Function for this Shortcode available:
<?php tablepress_table_info( 'id=1&field=name' ); ?>
Code language: PHP (php)
It works exactly like the Template Tag Function, with the parameters from this section.
Template Tag Functions
To show a table in places not covered by blocks or Shortcodes, e.g. in your page footer or in the sidebar, you can use the Template Tag Function tablepress_print_table( $query );
. It can be added to any part of your theme (between PHP brackets: <?php
and ?>
).
The parameter $query
can be a string in the form of a query string in a URL or it can be a an array with the query parameters and values.
If you don’t want to immediately print the table, but just get the output, use tablepress_get_table( $query );
, which works the same way.
See the Configuration parameter reference for a list of available parameters.
Example with $query
as a string:
<?php tablepress_print_table( 'id=1&use_datatables=true&print_name=false' ); ?>
Code language: PHP (php)
Example with $query
as an array (recommended and easier to read):
<?php tablepress_print_table( array(
'id' => '1',
'use_datatables' => true,
'print_name' => false,
) ); ?>
Code language: HTML, XML (xml)
There’s a also a Template Tag Function for the Shortcode
[table-info id=N field="<field-name>" /]
Code language: JSON / JSON with Comments (json)
available:
<?php tablepress_print_table_info( "id=1&field=name" ); ?>
Code language: PHP (php)
or
<?php tablepress_print_table_info( array(
'id' => '1',
'field' => 'name',
) ); ?>
Code language: PHP (php)
It works exactly as the Template Tag Function described above, with the parameters from the section about the [table-info /]
Shortcode.
Table Options
Each table has individual options that only concern that table. They can be changed on the table’s “Edit” screen. All of them may be overwritten by the corresponding configuration parameter of the “TablePress table” block in the block editor.
The following options are available:
- Alternating row colors
- If enabled, odd and even rows will get different background and text colors. (There’s an example on how to change these colors in the FAQ.)
- Row Highlighting
- If enabled, the background color of all cells of the row that is currently hovered with the mouse cursor is changed to highlight the row. (There’s an example on how to change the color in the FAQ.)
- Table Head Row
- If this is activated, all cells in the first displayed row will be encapsuled by the
<th>
instead of the<td>
HTML tag and the row will be put inside a<thead>
HTML tag. This is mandatory for using any of the “Table Features for Site Visitors”! - Table Foot Row
- If this is activated, all cells in the last displayed row will be encapsuled by the
<th>
instead of the<td>
HTML tag and the row will be put inside a<tfoot>
HTML tag. - Table Name
- If enabled, the Name of the Table will be printed above/below the table inside a
<h2>
HTML tag, which has the CSS classtablepress-table-name
. The position can be selected from “above” or “below”. - Table Description
- If activated, the Description of the Table will be printed above/below the table inside a
<span>
HTML tag, which has the CSS classtablepress-table-description
. The position can be selected from “above” or “below”.
Plugin Options
The plugin has the following general “Plugin Options”. They affect the global plugin behavior in different areas.
Custom CSS
If you want to change the style of tables, you can enter those additional commands into the “Custom CSS” textarea. There are examples on how to change certain style aspects on the FAQ page.
Admin menu entry
Use this setting to move the menu entry “TablePress” (by default in the middle of the menu) to another place in the admin menu of the Dashboard of your site.
CSS selectors, Styling
Every table gets certain CSS classes and an HTML ID that can be used for styling. Add your styling commands to the “Custom CSS” textarea on the “Plugin Options” screen.
There are examples for common styling tasks on the FAQ page.
CSS classes are attached as <element class="class-name">...</element>
to an <element>, IDs are attached as <element id="html-id">...</element>
.
CSS classes
.class {
/* your CSS */
}
Code language: CSS (css)
- tablepress (class of <table>)
- Every table has this class.
- tablepress-id-<ID> (class of <table>)
- Every table has this class (with its ID for <ID>).
- row-<number> (class of <tr>)
- Every row gets this. <number> is the number of the row displayed, no matter if it is a heading row or data row. Counting always starts at 1.
- column-<number> (class of every <th> or <td>)
- <number> is the number of the column the cell belongs to. It will be a class of every <th> and <td> element.
Use this for styling column widths!
Example:.tablepress .column-2 { width: 200px; }
There’s another example in the FAQ. Important: If you use both the
.column-X
and the.row-X
selectors at the same time, the.row-X
has to stand before the.column-X
(because it is given to the<tr>
which encloses the<td>
). - tablepress-table-name (classes of <h2>)
- If the Table Option “Print Table Name” is enabled, the Name of the Table will be printed above or below the table inside a <h2> HTML tag, which has this class.
- tablepress-table-description (classes of <span>)
- If the Table Option “Print Table Description” is enabled, the Description of the Table will be printed above or below the table inside a <span> HTML tag, which has this class.
CSS/HTML IDs
#html-id {
/* your CSS */
}
Code language: CSS (css)
- tablepress-<ID>-no-<number> (ID of <table>)
- Every table gets an ID like this. <ID> stands for the ID used in the “All Tables” list of TablePress. <number> is the count/occurrence of that table on the page up to this point. (For example, if you display the same table (with the same <ID>) twice on your site (e.g. once in a post and the second time in the sidebar), the first one will have no
-no-...
and the second one will have <number> = 2. This means, that these HTML IDs are not very reliable to be used for styling, as they might change depending on the occurrence of the same table on the page again. These IDs are used to invoke the JavaScript library’s calls (if activated for this occurrence of the table).
Table Features for Site Visitors
TablePress can add features like sorting, pagination (with length change feature), scrolling, and filtering/searching to a table. To enable those, check the corresponding checkboxes on the table’s “Edit” screen.
Even more features for your site’s visitors are available in the Premium features that come with a TablePress Premium plan.
You may decide for each table individually whether you want to use the “Table Features for Site Visitors” for it (see the Table Options page for more), and you can select the desired features individually.
You can add custom commands or configuration parameters into the “Custom Commands” text field. These need to follow the DataTables Documentation. You can also use certain Plugin Hooks in a custom plugin to add your own commands.
Import and Export Formats
TablePress understands a variety of common spreadsheet formats and can use them for importing and exporting tables. In addition, TablePress supports multiple import sources and can either add new tables from imported files or replace or append to existing tables.
Import Formats
The major import formats that TablePress automatically recognizes are described below. In addition, less common formats like ODS (OpenDocument Spreadsheet), Gnumeric, and SYLK are supported. Files from Apple Numbers are not supported at this time, so that it is recommended to save such a file to one of the supported formats before trying to import them.
CSV (Character-separated Values)
Every row is in a new line, every column is separated by a character (like “;” (semicolon), “,” (comma), or “\tab” (tabulator)). The plugin will try to determine the used separation character automatically. See the Wikipedia article for more information on the CSV format.
XLS/XLSX (Microsoft Excel)
TablePress also supports Microsoft Excel data formats for import (but not export!) of table data. Note that this support is not complete, and not all data features, like data types, are supported or available. Also, TablePress can only import the first worksheet of the Excel file. If you have problems importing tables from XLS or XLSX files, it’s recommend to save these tables in Excel as CSV files and try importing those.
HTML (Hypertext Markup Language)
The plugin will import the first occurrence of an HTML table (enclosed in <table></table>
) from an HTML file. It is not possible to import multiple tables from the same file or URL, but only the first one.
JSON (JavaScript Object Notation)
TablePress can import tables from JSON that represents a plain two-dimensional array of strings, where each string represents the content of a cell. It can also import its custom and more advanced JSON format, as created during the export. See the Wikipedia article for more information on the JSON format.
Export Formats
From the Import Formats that are described above, these are available as the target format for an exported table:
- CSV (Character-separated Values)
- HTML (Hypertext Markup Language)
- JSON (JavaScript Object Notation)
If multiple tables are exported at the same time, these will be stored in a ZIP archive.
Import Sources
TablePress can import files from four different sources, which can be selected on its “Import” screen:
- File Upload, by selecting or dragging and dropping files from your local computer
- URL (link address) of a file on a website
- Server (path of a file stored on the site’s server)
- Manual Input
The File Upload, URL, and Server import sources also support working with ZIP archives that contain multiple supported files. In addition, the File Upload import source allows to directly upload multiple files, even in different supported formats.
It is also possible to import tables form common online services like Google Sheets, Google Drive, Microsoft Excel Online, Microsoft OneDrive, and Dropbox. Beginner-friendly step-by-step tutorials are available to guide you through the process of finding the necessary URL for that.
These manual imports are one-time imports. Using the Automatic Periodic Table Import feature module of the TablePress Max premium license plan, it’s possible to fully automate the import of a table file. This saves time and allows updating tables without having to log into your WordPress site!
Access capabilities and user permissions
Access permissions in WordPress are based around Roles and Capabilities.
TablePress also fully supports and uses this system, by performing relevant permission checks before executing desired user actions. For this, it also uses custom access capabilities that are documented below. These can be used to control which user roles can do what in TablePress.
For even more control, down to the individual table and user level, the Advanced Access Rights feature module is a great choice.
Access capabilities assigned by TablePress
The user roles “Author”, “Editor”, and “Administrator” get the access capabilities
tablepress_edit_tables
tablepress_delete_tables
tablepress_list_tables
tablepress_add_tables
tablepress_copy_tables
tablepress_import_tables
tablepress_export_tables
tablepress_access_options_screen
tablepress_access_about_screen
Furthermore, the “Administrator” and “Editor” roles get the
tablepress_import_tables_url
capability. In addition, “Administrators” also get the capability
tablepress_edit_options
.
Modifying and using access capabilities
The Members and the User Role Editor plugin are popular choices to assign capabilities to existing or custom user roles. They both allow adding or removing these permissions to and from user roles.
Plugin Hooks, Actions, and Filters
TablePress has a large number of WordPress Plugin Hooks (Actions and Filters) in its source code. These provide easy and well established methods to add new features and enhancements to the plugin, or to alter plugin behavior. A more detailed explanation can be found in the WordPress Developer Handbook.
There are some examples on how to use these hooks on the Extensions page.
The advantage of using these hooks in contrast to modifying the plugin’s source files is that the changes will still work after upgrading the plugin, and that they can be maintained separately.
Source Code
The source code of TablePress Free is available in the ZIP file that can be downloaded from the plugin’s page in the WordPress Plugin Repository. It is Open Source and licensed as Free Software under GNU General Public License 2 (GNU GPL 2).
Development takes place in a git repository on GitHub.