{"id":359472,"date":"2026-08-29T09:45:49","date_gmt":"2026-08-29T09:45:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tablequill\/"},"modified":"2026-08-29T09:45:39","modified_gmt":"2026-08-29T09:45:39","slug":"tablequill","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tablequill\/","author":6138516,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1","requires":"6.8","requires_php":"8.1","requires_plugins":null,"header_name":"TableQuill","header_author":"David Gwyer","header_description":"Publish accessible, responsive data tables from reusable datasets in the block editor.","assets_banners_color":"364052","last_updated":"2026-08-29 09:45:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/wpgoplugins.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"dgwyer","date":"2026-08-29 09:45:39","revision":3671328}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3671328,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3671328,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3671328,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3671328,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"tablequill\/table":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"tablequill\/table","version":"0.1.0","title":"TableQuill Table","category":"widgets","icon":"editor-table","description":"Publish a reusable, accessible data table.","keywords":["data","csv","responsive","directory"],"textdomain":"tablequill","attributes":{"viewId":{"type":"number","default":0}},"supports":{"align":["wide","full"],"anchor":true,"html":false,"color":{"background":true,"text":true},"spacing":{"margin":true,"padding":true}},"usesContext":["postId"],"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","viewScript":"file:.\/view.js","render":"file:.\/render.php"}},"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3671328,"resolution":"1","location":"assets","locale":"","width":1505,"height":950},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3671328,"resolution":"10","location":"assets","locale":"","width":850,"height":390},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3671328,"resolution":"11","location":"assets","locale":"","width":850,"height":600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3671328,"resolution":"2","location":"assets","locale":"","width":1505,"height":980},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3671328,"resolution":"3","location":"assets","locale":"","width":480,"height":906},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3671328,"resolution":"4","location":"assets","locale":"","width":1520,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3671328,"resolution":"5","location":"assets","locale":"","width":1520,"height":600},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3671328,"resolution":"6","location":"assets","locale":"","width":850,"height":600},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3671328,"resolution":"7","location":"assets","locale":"","width":850,"height":650},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3671328,"resolution":"8","location":"assets","locale":"","width":850,"height":900},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3671328,"resolution":"9","location":"assets","locale":"","width":850,"height":520}},"screenshots":{"1":"A published semantic Free table in the clean style.","2":"The Free high-contrast style.","3":"A responsive Free card layout on mobile.","4":"The Gutenberg block workflow and settings.","5":"The reusable Dataset registry and controls.","6":"Dataset details and saved View placements.","7":"Public CSV\/TSV import and the WordPress content builder.","8":"Free WordPress query controls and read-only TablePress import.","9":"All six Free visual styles.","10":"All four Free starter templates.","11":"The Free\/Pro screen and separate-package boundary."}},"plugin_section":[],"plugin_tags":[567,1487,15862,19196,2289],"plugin_category":[],"plugin_contributors":[78335,146884],"plugin_business_model":[],"class_list":["post-359472","plugin","type-plugin","status-publish","hentry","plugin_tags-csv","plugin_tags-custom-post-types","plugin_tags-data-table","plugin_tags-responsive-table","plugin_tags-table","plugin_contributors-dgwyer","plugin_contributors-wpgoplugins","plugin_committers-dgwyer"],"banners":{"banner":"https:\/\/ps.w.org\/tablequill\/assets\/banner-772x250.png?rev=3671328","banner_2x":"https:\/\/ps.w.org\/tablequill\/assets\/banner-1544x500.png?rev=3671328","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tablequill\/assets\/icon-128x128.png?rev=3671328","icon_2x":"https:\/\/ps.w.org\/tablequill\/assets\/icon-256x256.png?rev=3671328","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-1.png?rev=3671328","caption":"A published semantic Free table in the clean style."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-2.png?rev=3671328","caption":"The Free high-contrast style."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-3.png?rev=3671328","caption":"A responsive Free card layout on mobile."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-4.png?rev=3671328","caption":"The Gutenberg block workflow and settings."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-5.png?rev=3671328","caption":"The reusable Dataset registry and controls."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-6.png?rev=3671328","caption":"Dataset details and saved View placements."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-7.png?rev=3671328","caption":"Public CSV\/TSV import and the WordPress content builder."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-8.png?rev=3671328","caption":"Free WordPress query controls and read-only TablePress import."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-9.png?rev=3671328","caption":"All six Free visual styles."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-10.png?rev=3671328","caption":"All four Free starter templates."},{"src":"https:\/\/ps.w.org\/tablequill\/assets\/screenshot-11.png?rev=3671328","caption":"The Free\/Pro screen and separate-package boundary."}],"raw_content":"<!--section=description-->\n<p>TableQuill separates reusable typed Datasets from their presentation Views. A dynamic block renders semantic table HTML, while optional JavaScript adds search, sorting, and pagination.<\/p>\n\n<p>Initial-release source workflows include:<\/p>\n\n<ul>\n<li>Live, publish-only queries for posts, pages, and public custom post types.<\/li>\n<li>Pasted CSV and TSV stored as independent TableQuill Dataset snapshots.<\/li>\n<li>Public CSV\/TSV URL preview and snapshot import with explicit manual refresh.<\/li>\n<li>Explicit read-only TablePress snapshot import, comparison, and re-import.<\/li>\n<\/ul>\n\n<p>Imported rows remain TableQuill data. They are not transformed into posts, pages, custom post types, terms, users, or other WordPress records.<\/p>\n\n<p>Free includes six styles, four starter templates, accessibility, and responsive behavior. The separate Pro plugin supplies its extended library and paid implementations; that executable code is absent from the WordPress.org package.<\/p>\n\n<p>The separate Pro plugin can add date ranges, multiple taxonomy clauses, and allowlisted scalar fields to WordPress queries. Custom fields appear only when site\/integration code explicitly allowlists their raw scalar values. TableQuill does not infer safety from WordPress or ACF REST settings; protected, complex, and unlisted values remain unavailable.<\/p>\n\n<p>The separate Pro plugin can promote a snapshot Dataset to a bounded indexed engine while retaining canonical JSON for editing and recovery. Promotion never creates posts or changes View\/block identities, and administrators can return to the simple engine.<\/p>\n\n<h3>External Services<\/h3>\n\n<h4>Public CSV\/TSV URLs<\/h4>\n\n<p>When an administrator previews, imports, or refreshes a public CSV\/TSV URL, TableQuill sends a server-side GET to that URL and up to two validated redirects. A Pro schedule may repeat the request only when enabled by an administrator. Destinations receive the site's IP address, the TableQuill version and site home URL in the user agent, standard HTTP metadata, and available ETag\/Last-Modified values. Administrators should review the selected provider's service, terms, privacy policy, and redirects before use.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload and activate the TableQuill plugin.<\/li>\n<li>Add a TableQuill Table block or open TableQuill in the WordPress admin.<\/li>\n<li>Create a live WordPress query or import a tabular snapshot.<\/li>\n<li>Choose a View style and responsive behavior, then publish the block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20importing%20data%20create%20wordpress%20posts%3F\"><h3>Does importing data create WordPress posts?<\/h3><\/dt>\n<dd><p>No. Imported rows stay in TableQuill's own Dataset storage. Only the WordPress query source reads existing posts, pages, and public custom post types, and it never mutates them.<\/p><\/dd>\n<dt id=\"does%20a%20tablepress%20import%20stay%20synchronized%3F\"><h3>Does a TablePress import stay synchronized?<\/h3><\/dt>\n<dd><p>No automatic synchronization is implied. TableQuill creates an independent snapshot and provides an explicit compare\/re-import action. It never writes to the TablePress source table.<\/p><\/dd>\n<dt id=\"can%20a%20public%20csv%20url%20refresh%20automatically%3F\"><h3>Can a public CSV URL refresh automatically?<\/h3><\/dt>\n<dd><p>Manual import and refresh are included in Free. The installed Pro package can enable hourly, twice-daily, or daily refresh through WordPress Cron. A failed refresh keeps the last successful rows and records the failure for an administrator.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20data%20on%20uninstall%3F\"><h3>What happens to data on uninstall?<\/h3><\/dt>\n<dd><p>TableQuill does not automatically erase user Datasets or Views during uninstall.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20pro%20licence%20expires%3F\"><h3>What happens if a Pro licence expires?<\/h3><\/dt>\n<dd><p>Features and editing shipped in an installed TableQuill Pro package remain usable. Licence status governs acquisition, downloads, updates, support, checkout, and account services; it does not turn installed Pro functionality off.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release with live WordPress content queries, pasted and public CSV\/TSV data, TablePress snapshots, reusable Views, semantic responsive rendering, and a separate-package Free\/Pro boundary.<\/li>\n<\/ul>","raw_excerpt":"Publish accessible, responsive tables from WordPress content, pasted CSV\/TSV, and explicit TablePress snapshots.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/359472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=359472"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dgwyer"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=359472"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=359472"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=359472"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=359472"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=359472"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=359472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}