Table of Contents
Video tutorial
Creating tables manually

One of most common uses of wpDataTables is to create tables, and fill them with data taken from the WordPress admin panel, without accessing or having any pre-existing data source available (Excel, CSV, Google Spreadsheet, MySQL DB, etc.). The editable table you create will be stored in MySQL, and you will be able to edit it at an any later time, or make it available for editing from the front-end.
We’ll go through the table creation process together, and explain all the available options as we proceed.
To start creating a table manually, open your WordPress admin panel, go to wpDataTables -> Create a Table, choose the second option “Create a table manually”, and click “Next“:
Configure table structure
You will be shown the wizard steps that will assist you in creating the table structure.
(Note: if during any step, you notice that you’ve made a mistake, click “Previous” and go back)
This step is divided into two parts: table-level settings and column settings:

Table-level settings
Going through the elements in detail:
- Table name input – here you can define a table name that will enable you to identify this table among any other wpDataTables. This table name can be redefined at any later time.
-
Custom table name in database – here you can define a custom name for the MySQL table that will be created in your database.
By default, wpDataTables uses the
wp_wpdatatable_{id}format for Manual tables. For example, the first table will be namedwp_wpdatatable_1, the secondwp_wpdatatable_2, and so on.If you define a custom name, it must be less than 64 characters and can contain only letters, numbers, and underscores. It cannot start with a number unless the Prefix for custom database name option is enabled.
If this field is left empty, the default
wp_wpdatatable_{id}naming pattern will be used. - Table description – an optional field to add a short description of the table. By default, it is only visible to you here in the admin panel, but it can also be displayed on the front-end, above the table itself — just enable “Show table description on the page” under the table’s Display tab (it is off by default).
- Number of columns input – provide the number of columns that your table will have (e.g. enter 10, if you plan to have 10 columns). Another option you can use to change the column numbers is to add them with the + button or remove them with the X button directly on each column block below. You can always add or remove columns later, after the table has been created.
-
Prefix for custom database name – when enabled, this option automatically adds your WordPress database table prefix to the custom database name entered in #2.
For example, if your WordPress database prefix is
wp_and your custom database name isclients, the resulting MySQL table name will bewp_clients.This option is only relevant when a custom database name has been entered.
Good to know: Once a table has been created, you can always check the exact MySQL table name it is currently using — whether custom or auto-generated — by opening the table’s settings and going to the Editing tab, where it is displayed in the read-only “MySQL table name for editing” field.
Column settings
Below the table-level settings, you can configure each column individually.
Going through the elements in detail:
- Column header – with this input, you define the header that will identify the column.
- Column type – this input defines the data type of the column, the filter type for the column, and the editor input type.
- Type in database – here you can choose the exact MySQL column type that will be used for storing the data, such as
VARCHAR,TEXT,INT, orDECIMAL. - Type value – this option allows you to define the size or precision value for the selected database type. For example, you can enter
255forVARCHAR, or16,4forDECIMAL. Not every database type requires a value, so this field will not be displayed for types such asTEXT. - Editor predefined value. This is an optional input, that allows you to define a default value of the column which will be pre-filled in the editor inputs, and in the filter inputs. If the column type is One-line selectbox, or Multi-line selectbox, and some possible values are defined (see point #6), this input will become a dropdown of the possible values.
- Possible values. This is a “taggable” input, which appears only for One-line selectbox and Multi-line selectbox types. Here you can define all the possible values, separating them with a comma.
- “X” / Remove column block button. This button removes a column block. Using it can be more convenient than changing the column number with an input.
- Add column button. This button adds one more column block.
- Create the table. This is a dropdown button with options to choose an editor type. After choosing one, it creates the table on the MySQL side (using either your custom table name or the default naming pattern), creates a wpDataTable, and opens the chosen editor type, from which you can start editing the table data.
Database types
If you don’t need to define the exact database type and value, you can leave Type in database and Type value unchanged. wpDataTables will automatically assign the appropriate database type and value based on the selected column type.
These options are useful when you need more control over the underlying MySQL table structure.

Column type options:
- One-line string. This is the most “simple” text type. It is suitable for short strings. The generated column will have a “string” (“text”) data type, a one-line text input filter type, and a one-line text input editor input type in the editor.
- Multi-line string. This text type option is suitable for longer strings. The generated column will have a string data type, a one-line text input filter type, and a multi-line editor (“memo”) input type.
- One-line selectbox. This option is for columns, in which cells can have one of several possible options as a value (e.g. colors: “red”, “green”, “blue”). The generated column will have a string data type, a select box filter, and a select box editor input.
- Multi-line selectbox. This option is for columns, in which cells can have several of possible options as a value at one time (e.g. purchased modules: module 1, module 2, module 3). The generated columns will have a string data type, a select box filter, and a multi-selectbox editor input.
- Integer. This option is for integer numeric columns. The generated column will have an integer data type, a number filter, and a text/numeric editor input.
- Float. This option is for float numeric columns. The generated column will have a float data type, a number filter, and a masked text/numeric editor input.
- Date. This option is for date columns. The generated columns will have a date data type, a date range filter, and a datepicker editor input.
- DateTime. This option is for DateTime columns, when both the date and the time is necessary. The column will have a DateTime data type, a DateTime range filter, and a DateTime editor input.
- Time. This option is for having the time stored in the column in either a 12H or 24H format. The column will have a Time data type, a Time range filter and a Time editor input.
- URL link. This option is for URL link columns. The generated columns will have a URL link data type, a text filter, and a text editor input with URL validation.
- E-mail link. This option is for E-mail columns. The generated columns will have an e-mail link data type, a text filter, and a text editor input type with E-mail address validation.
- Image. This option is for image columns. The generated columns will have an Image data type, no filter, and a text editor input.
- Attachment. This option is for attachment columns. The generated columns will have a “URL link data type”, no filter, an a “Browse media library” input to attach files.
- Hidden (Dynamic). This column type allows you to automatically populate column values when a new row is added to the table. You can use it for values such as the current user, current date and time, placeholders, and other dynamic data. Hidden columns are not displayed by default, but their visibility can be enabled from the Column List when needed. For more information, see our Hidden (Dynamic) Columns documentation.
Note: If you try to enter a value that exceeds the limit of a One-line string column, you may see an error saying “The supplied value may be too long or contains invalid data.” To resolve it, you can either recreate the column as a Multi-line string, or change the database type of the existing column from VARCHAR to TEXT. See our FAQ about the “The supplied value may be too long” error for more details.
Standard columns
Manual tables are created with four standard columns that can be used to keep track of who created or last edited each row:
- wdt_created_by – stores the username of the user who created the row.
- wdt_created_at – stores the date and time when the row was created.
- wdt_last_edited_by – stores the username of the user who last edited the row.
- wdt_last_edited_at – stores the date and time when the row was last edited.
These columns are hidden by default, so they will not be displayed in the table unless you choose to show them. You can toggle their visibility from the Column List whenever you need to use or display this information.
Configuring an example table

Let’s configure an example table and fill it in with some data.
We use this configuration for columns (a dummy clients table):
- Company name, type: a one-line string
- Sector, type: a one-line selectbox, possible values are: “Architecture, Business Consulting, Construction, Technology, IT”
- Yearly revenue, type: float
- Client since, type: date

When you have finished configuring the table, click “Create the table”. A dropdown will open with options to open the table in a standard editor or an Excel-like editor.
Inserting table on post or page

If you have an older version of WordPress (prior to WordPress 5), you will have this editor by default, but if you updated your website to WordPress 5+, you can still use this editor with the help of the Classic Editor Plugin.
Once you’ve filled in some values in the table, the procedure of inserting it in your post or page is simple. Open (or create a new) post or page, place the cursor in the position where you would like to insert the table, click the “Insert a wpDataTable” button in the editor, and locate the newly-created table.
Another option is to copy&paste the table shortcode manually (you can see it in the back-end editor).
If you are using Gutenberg editor, Elementor, or WPBakery page builder, you can check out the section for Adding wpDataTables shortcodes on the page.
That’s it! Not complicated at all!