If you're using server-side processing tables in wpDataTables and have caching active on the page, you may encounter issues such as:
Tables sometimes load, but other times get stuck on an infinite loading animation
The table loads correctly on a desktop device but fails to load on other devices
The table loads when you’re logged in as an Admin, but not for non-logged-in users
Inspecting the browser’s developer console typically shows an “Invalid JSON response” or an AJAX error
These issues occur because cached pages interfere with the real-time server-side requests that are necessary for database communication.
Our developers are actively working on a fix.
While we can’t provide an ETA, updates and fixes will be posted here:
ChangeLog: https://wpdatatables.com/help/whats-new-changelog/
Newsletter: https://wpdatatables.com/newsletter/
Until a fix is released, there are two possible workarounds:
Most caching plugins allow you to exclude specific pages from caching.
Add the URLs where your wpDataTables are published to your caching plugin’s exclusion list.
Alternatively, disable caching entirely if acceptable for your site.
This ensures that server-side processing works without interference from cached content.
For Manual Tables, server-side processing cannot be disabled directly.
However, since Manual Tables store their data in a SQL database, you can create a new SQL Query-based table that calls the same source data. On this table, you will be able to toggle server-side processing off.
Steps to Create a SQL Query Table:
Go to the Editing settings of your Manual Table and find the MySQL Table Name.
Create a new SQL Query-based wpDataTable with the query:
SELECT * FROM TableName
During setup, you can disable server-side processing if the table has fewer than 2,000 rows.
This new SQL table will call the same data source — so any edits will still save back to the original database table.
For any SQL Query-based table with fewer than 2,000 rows, you can disable the server-side processing option, and it will work like tables linked from files — loading all rows in the browser regardless of the table’s pagination.
By default, wpDataTables will force server-side processing for tables with more than 2,000 rows.
If your table has more rows but you still want to disable server-side processing, you can increase this threshold by adjusting the plugin's code.
Steps to increase the limit:
Edit this PHP file via FTP on your Hosting server:
../wp-content/plugins/wpdatatables/source/class.wpdatatable.php
around line 3188 you'll see this:
if (is_array($res_dataRows) && count($res_dataRows) > 2000) {
The lines of code may change during updates, as our developers occasionally add new lines. Therefore, it’s best to search for the line in a code editor using CTRL+F to locate it accurately.
You can change the number 2000 to a value greater than the number of rows in your table to keep the toggle option for server-side processing available.
Another PHP file in this path :
../wp-content/plugins/wpdatatables/source/class.wdtconfigcontroller.php
In this file, please search for this, there should be two occurrences, first one around line 82 as :
if (count($wpDataTable->getDataRows()) > 2000) {
And second one around line 143:
if (count($wpDataTable->getDataRows()) > 2000) {
That will increase the server-side processing option's automatic limit.
Important:
Be cautious when increasing the limit:
Tables with up to 5,000–6,000 rows usually perform fine without server-side processing.
Higher row counts may lead to slower page loads or browser freezes, depending on your hosting server’s PHP limitations.
We recommend testing table performance carefully — if the page loads too slowly, you can re-enable server-side processing at any time in the table’s backend settings.
This issue only affects server-side processing tables when caching is active.
It can occur with Manual tables, SQL Query-based tables, and Gravity Forms integration tables if the server-side processing option is enabled.
(It does not affect other table types linked from source files such as CSV, Excel, Google Sheets, JSON, PHP array, and others.)
Solution 1: Disable caching for pages where tables are displayed.
Solution 2: Create a new SQL Query-based table calling the same data source and disable server-side processing.
Optional: Carefully increase the server-side processing toggle limit if needed.
For the latest news on updates and bug fixes:
ChangeLog: https://wpdatatables.com/help/whats-new-changelog/
Newsletter: https://wpdatatables.com/newsletter/
Feel free to contact our Support Team if you have any questions — we’re here to assist you!