Requirements & Compatibility
TableCrafter 3.5.6 runs on PHP 8.0+ and WordPress 5.0+ (tested through 7.0), works with any theme through three rendering paths, and has only one hard hosting dependency: the PHP ZipArchive extension, used for genuine Excel export.
At a Glance
The values below are read directly from the plugin header (tablecrafter.php) and the WordPress.org metadata (readme.txt). They are enforced, not aspirational.
| Requirement | Minimum | Tested / Recommended |
|---|---|---|
| PHP | 8.0.0 Required | 8.1–8.3 (CI matrix runs 8.0–8.3) |
| WordPress | 5.0 | Tested up to 7.0 |
| MySQL / MariaDB | WordPress default | No custom tables created |
| ZipArchive (PHP ext) | For XLSX export only | Bundled on most hosts |
| Elementor | Optional | 3.5.0+ for the native registration hook |
PHP Version
TableCrafter requires PHP 8.0 or higher. This is a hard gate enforced at the top of the main plugin file before any other code loads:
if (version_compare(PHP_VERSION, '8.0.0', '<')) {
// Shows an admin notice and aborts loading the plugin
add_action('admin_notices', function () { /* ... */ });
return;
}
On PHP 7.x the plugin will not run. WordPress stays active and you see a red admin notice (“This plugin requires PHP 8.0 or higher”), but no shortcodes, blocks, or the admin menu are registered. Upgrade PHP, then reload wp-admin.
WordPress Version & Rendering Paths
The minimum supported WordPress version is 5.0 and the plugin is tested up to 7.0. There are three ways to place a table, each with its own floor:
| Method | How it registers | Minimum WP |
|---|---|---|
| [tablecrafter] | add_shortcode('tablecrafter', ...) | Any classic or block theme |
| tablecrafter/data-table | register_block_type() (Gutenberg block) | 5.0 (block editor) |
| Elementor widget | elementor/loaded + widget hooks | Elementor installed |
The shortcode is the universal fallback. The Gutenberg block guards itself with if (!function_exists('register_block_type')) return;, so on a pre-5.0 install the block simply does not register while the shortcode keeps working.
<!-- Universal shortcode: works in any theme, any builder content area -->
[tablecrafter source="https://example.com/data.json" search="true" per_page="10"]
// Or render it from a PHP template file:
echo do_shortcode('[tablecrafter source="https://example.com/data.json"]');
Theme Compatibility
TableCrafter is theme-agnostic. It renders a standard <table class="tc-table"> inside a <div class="tablecrafter-container"> wrapper and ships its own stylesheet, so it does not depend on theme markup. Block themes (Twenty Twenty-Five), classic themes, and page-builder themes (Astra, Kadence, Hello Elementor, GeneratePress) all work because every output path funnels through the same shortcode renderer.
Styling is overridable two ways without touching plugin files:
- CSS classes — every selector is namespaced under
.tc-(e.g..tc-table,.tablecrafter-container). Add overrides in your theme’s stylesheet or the Customizer’s Additional CSS. - CSS variables — the high-contrast layer exposes
--tc-border-color,--tc-text-color,--tc-bg-color, and--tc-focus-colorfor quick palette swaps.
/* Re-skin tables to match your theme */
.tablecrafter-container {
--tc-border-color: #1d4ed8;
--tc-text-color: #0f172a;
--tc-bg-color: #ffffff;
}
On mobile the renderer reflows tables into card layouts using an intelligent breakpoint system: ≤768px mobile, 768–900px tablet, >900px desktop. This is automatic and theme-independent.
Page Builder Compatibility
Gutenberg (Block Editor)
The native block tablecrafter/data-table registers a render_callback that bridges straight into the shortcode engine, so the published output is identical to the shortcode. It exposes sidebar controls for source, root, include, exclude, search, filters, per_page, export, and the auto-refresh options. Requires WordPress 5.0+.
Elementor
The Elementor widget is loaded lazily on the elementor/loaded action and the widget class is only defined when \Elementor\Widget_Base exists, so a site without Elementor never loads that code and cannot fatal because of it.
- On Elementor 3.5.0+ the widget registers via the modern
elementor/widgets/registerhook. - On older Elementor it falls back to
elementor/widgets/widgets_registeredfor backward compatibility. - The widget offers a true live preview of real data inside the editor (toggleable per widget).
Other builders (Beaver Builder, Bricks, Divi, WPBakery) are supported through their shortcode/HTML modules — drop a [tablecrafter ...] shortcode into any text or shortcode element and it renders the same as everywhere else.
Hosting Requirements
TableCrafter is a lightweight data viewer: it creates no custom database tables and stores fetched data only in transients (SWR caching). The practical hosting checklist is short:
- Outbound HTTP — the server-side proxy fetches your
sourceURL via WordPress’ HTTP API. Your host must allow outbound requests (most do). This also bypasses browser CORS entirely. - ZipArchive PHP extension — required for Excel export. The export handler throws “PHP ZipArchive extension is required for XLSX export” if it is missing. CSV and PDF export do not need it.
- Standard memory/time limits — no special
php.inituning is required for typical datasets; large remote payloads benefit from the built-in caching.
PDF export is generated natively as a valid PDF 1.4 document — no TCPDF, mPDF, or other library install is needed. XLSX is a genuine OOXML workbook built with ZipArchive, not a renamed CSV. Both come from the canonical includes/class-tc-export-handler.php.
Multisite Compatibility
TableCrafter runs on WordPress Multisite. It registers the same shortcode, block, and Elementor widget per site, and because it stores no custom tables there is no schema to provision per blog. The only network-aware logic is in the post-activation welcome redirect, which deliberately skips the Network Admin context:
if (is_network_admin()) {
return; // don't fire the welcome redirect at network level
}
Practical notes for network operators:
- Activate per-site or network-wide; both work. There is no special network-activation routine, so enabling per site is the most predictable.
- The admin menu (slug
tablecrafter-wp-data-tables) and Welcome submenu (tablecrafter-welcome) appear under each site’s admin, gated by themanage_optionscapability. - Transient caches are per-site, so each subsite caches its own data sources independently.
Where to Find It in wp-admin
After activation, look for the TableCrafter entry in the left admin sidebar (table icon, dashicons-editor-table).
- TableCrafter → the dashboard with the visual shortcode builder and live preview playground (
admin.php?page=tablecrafter-wp-data-tables). - TableCrafter → Welcome → onboarding screen with one-click demo data (
admin.php?page=tablecrafter-welcome).
Both pages require the manage_options capability (Administrators by default).
Pre-Install Checklist
- Confirm PHP is 8.0+ (Tools → Site Health → Info → Server).
- Confirm WordPress is 5.0+ (7.0 is the latest tested).
- If you need Excel export, verify the ZipArchive extension is enabled.
- If you use Elementor, run 3.5.0+ for the modern widget registration.
- Ensure your host permits outbound HTTP requests so the proxy can fetch remote sources.
Next, head to installation.html to install and activate the plugin, then build your first table with the quick-start.html guide.