{"id":313127,"date":"2026-05-23T09:14:43","date_gmt":"2026-05-23T09:14:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/publishly\/"},"modified":"2026-05-23T08:59:37","modified_gmt":"2026-05-23T08:59:37","slug":"tabloria-searchable-displays","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tabloria-searchable-displays\/","author":23499837,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.44","stable_tag":"trunk","tested":"6.9.4","requires":"6.3","requires_php":"8.1","requires_plugins":null,"header_name":"Tabloria Searchable Displays","header_author":"Tabloria","header_description":"A friendly spreadsheet publishing assistant for creating reusable searchable WordPress Displays.","assets_banners_color":"","last_updated":"2026-05-23 08:59:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":0,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3544948,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3544948,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":{"tabloria\/display":{"name":"tabloria\/display","title":"Tabloria Display"},"tabloria\/display-grid":{"name":"tabloria\/display-grid","title":"Tabloria Display Grid"}},"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[567,2466,148076,4528,9471],"plugin_category":[],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-313127","plugin","type-plugin","status-publish","hentry","plugin_tags-csv","plugin_tags-directory","plugin_tags-gutenberg","plugin_tags-listings","plugin_tags-spreadsheet","plugin_committers-publishly"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tabloria-searchable-displays\/assets\/icon-128x128.png?rev=3544948","icon_2x":"https:\/\/ps.w.org\/tabloria-searchable-displays\/assets\/icon-256x256.png?rev=3544948","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Tabloria Searchable Displays is a friendly spreadsheet publishing assistant for WordPress.<\/p>\n\n<p>Upload a CSV spreadsheet, create a reusable Published Display, and insert that Display in Gutenberg with the Tabloria Display block.<\/p>\n\n<p>Use the Tabloria Display Grid block when you want to arrange multiple Published Displays on the same page.<\/p>\n\n<p>This MVP focuses on the core loop:<\/p>\n\n<ul>\n<li>CSV upload<\/li>\n<li>smart column detection<\/li>\n<li>field roles<\/li>\n<li>visible fields<\/li>\n<li>simple search, filters, sorting, and pagination<\/li>\n<li>reusable Published Displays<\/li>\n<li>Gutenberg block rendering by Display ID<\/li>\n<li>Tabloria Display Grid block for multiple Displays<\/li>\n<li>shortcode fallback: [tabloria id=\"123\"]<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>tabloria-searchable-displays<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate Tabloria Searchable Displays from the WordPress Plugins screen.<\/li>\n<li>Open Tabloria -&gt; Create Display.<\/li>\n<li>Upload a CSV file and follow the guided flow.<\/li>\n<li>Insert a Tabloria Display block, or use Tabloria Display Grid for multiple Displays.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20tabloria%20edit%20spreadsheet%20rows%3F\"><h3>Does Tabloria edit spreadsheet rows?<\/h3><\/dt>\n<dd><p>No. The spreadsheet remains the source of truth. Tabloria controls how the data appears as a reusable Display.<\/p><\/dd>\n<dt id=\"does%20the%20gutenberg%20block%20store%20the%20full%20display%20configuration%3F\"><h3>Does the Gutenberg block store the full Display configuration?<\/h3><\/dt>\n<dd><p>No. The block stores the selected Display ID. The Display configuration lives in Tabloria.<\/p><\/dd>\n<dt id=\"can%20i%20put%20several%20displays%20in%20a%20gutenberg%20table%3F\"><h3>Can I put several Displays in a Gutenberg table?<\/h3><\/dt>\n<dd><p>Use Tabloria Display Grid instead. Gutenberg tables are for tabular content, not layout, and can squeeze interactive Displays into table cells.<\/p><\/dd>\n<dt id=\"does%20this%20mvp%20support%20xlsx%3F\"><h3>Does this MVP support XLSX?<\/h3><\/dt>\n<dd><p>The architecture includes an XLSX parser service, but the current MVP imports CSV files first.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.44<\/h4>\n\n<ul>\n<li>Renamed the plugin to Tabloria Searchable Displays with the <code>tabloria-searchable-displays<\/code> text domain and package slug.<\/li>\n<li>Restricted Display REST list, detail, and preview endpoints to site administrators.<\/li>\n<\/ul>\n\n<h4>0.1.43<\/h4>\n\n<ul>\n<li>Added centralized CSV value validation for uploaded spreadsheet data.<\/li>\n<li>Hardened URL, image, email, formula-looking, oversized, and binary-looking CSV values.<\/li>\n<li>Added unit tests for suspicious CSV data, config validation, and frontend rendering boundaries.<\/li>\n<\/ul>\n\n<h4>0.1.42<\/h4>\n\n<ul>\n<li>Added a Tabloria Display Grid block for arranging multiple Published Displays safely.<\/li>\n<li>Contained Tabloria Displays inside Gutenberg tables and narrow containers, with an admin-only table warning.<\/li>\n<\/ul>\n\n<h4>0.1.41<\/h4>\n\n<ul>\n<li>Prefixed visitor filter values with their field label, for example Status: In Stock.<\/li>\n<\/ul>\n\n<h4>0.1.40<\/h4>\n\n<ul>\n<li>Clarified frontend controls so search says it searches all fields and visitor filter defaults read like value filters.<\/li>\n<\/ul>\n\n<h4>0.1.39<\/h4>\n\n<ul>\n<li>Skipped the duplicate Display type selection screen after spreadsheet detection and moved type changes into setup.<\/li>\n<\/ul>\n\n<h4>0.1.38<\/h4>\n\n<ul>\n<li>Ensured full-width table displays load their frontend alignment script with the Gutenberg block and align against the visible viewport.<\/li>\n<\/ul>\n\n<h4>0.1.37<\/h4>\n\n<ul>\n<li>Centered wide and full-width frontend table displays against the viewport instead of inherited theme container offsets.<\/li>\n<\/ul>\n\n<h4>0.1.36<\/h4>\n\n<ul>\n<li>Reworded the detection review step so users continue with detected columns instead of approving subjective copy.<\/li>\n<\/ul>\n\n<h4>0.1.35<\/h4>\n\n<ul>\n<li>Removed the redundant Published badge from Published Display cards.<\/li>\n<\/ul>\n\n<h4>0.1.34<\/h4>\n\n<ul>\n<li>Made Published Display cards open the editor on click and removed Update Data from card actions.<\/li>\n<\/ul>\n\n<h4>0.1.33<\/h4>\n\n<ul>\n<li>Restored Display type switching in the editor and aligned the editor field controls.<\/li>\n<\/ul>\n\n<h4>0.1.32<\/h4>\n\n<ul>\n<li>Moved Display type switching to the create setup flow and cleaned up the editor fields layout.<\/li>\n<\/ul>\n\n<h4>0.1.31<\/h4>\n\n<ul>\n<li>Removed the editor Style tab and added Display type switching with live preview updates.<\/li>\n<\/ul>\n\n<h4>0.1.30<\/h4>\n\n<ul>\n<li>Reworked the starting screen into a Display type decision step with type-specific previews.<\/li>\n<\/ul>\n\n<h4>0.1.29<\/h4>\n\n<ul>\n<li>Made setup previews render the selected Display type instead of using one generic card grid.<\/li>\n<\/ul>\n\n<h4>0.1.28<\/h4>\n\n<ul>\n<li>Added numeric less-than and greater-than operators for default filters.<\/li>\n<\/ul>\n\n<h4>0.1.27<\/h4>\n\n<ul>\n<li>Made setup sections collapsible so the controls stay compact beside the live preview.<\/li>\n<\/ul>\n\n<h4>0.1.26<\/h4>\n\n<ul>\n<li>Improved field mapping rows so descriptions sit above full-width column selectors.<\/li>\n<\/ul>\n\n<h4>0.1.25<\/h4>\n\n<ul>\n<li>Fixed Default Filter controls so field and operator selections persist before a value is entered.<\/li>\n<\/ul>\n\n<h4>0.1.24<\/h4>\n\n<ul>\n<li>Fixed source REST validation fatals and renamed the misleading Insert action to Copy shortcode.<\/li>\n<\/ul>\n\n<h4>0.1.23<\/h4>\n\n<ul>\n<li>Added type-specific thumbnails for Published Display cards.<\/li>\n<\/ul>\n\n<h4>0.1.22<\/h4>\n\n<ul>\n<li>Replaced the duplicate Upload Spreadsheet hero action with a Published Displays shortcut.<\/li>\n<\/ul>\n\n<h4>0.1.21<\/h4>\n\n<ul>\n<li>Fixed table previews and published tables so wide column sets scroll horizontally instead of hiding fields.<\/li>\n<\/ul>\n\n<h4>0.1.20<\/h4>\n\n<ul>\n<li>Fixed admin previews so default filters and sorting affect the visible sample immediately.<\/li>\n<\/ul>\n\n<h4>0.1.19<\/h4>\n\n<ul>\n<li>Removed the old separate Customize and Preview wizard screens from the create flow.<\/li>\n<\/ul>\n\n<h4>0.1.18<\/h4>\n\n<ul>\n<li>Combined Display setup, options, and full preview into one setup-and-preview step.<\/li>\n<\/ul>\n\n<h4>0.1.17<\/h4>\n\n<ul>\n<li>Fixed admin previews so Simple Data Table displays render as tables instead of cards.<\/li>\n<\/ul>\n\n<h4>0.1.16<\/h4>\n\n<ul>\n<li>Removed an outdated explanatory helper card from Display Content setup.<\/li>\n<\/ul>\n\n<h4>0.1.15<\/h4>\n\n<ul>\n<li>Removed cosmetic Look controls from the main publishing flow and kept professional defaults.<\/li>\n<\/ul>\n\n<h4>0.1.14<\/h4>\n\n<ul>\n<li>Simplified appearance controls into compact Look and Page controls panels.<\/li>\n<\/ul>\n\n<h4>0.1.13<\/h4>\n\n<ul>\n<li>Fixed WordPress admin select arrows repeating inside Tabloria dropdown controls.<\/li>\n<\/ul>\n\n<h4>0.1.12<\/h4>\n\n<ul>\n<li>Combined appearance customization with the final website preview.<\/li>\n<li>Made visual controls compact so the preview takes most of the screen.<\/li>\n<\/ul>\n\n<h4>0.1.11<\/h4>\n\n<ul>\n<li>Made Display Content mapping outcome-specific with listing, product, profile, schedule, pricing, and table examples.<\/li>\n<li>Renamed details controls by Display type so extra fields are separated from the main Display structure.<\/li>\n<\/ul>\n\n<h4>0.1.10<\/h4>\n\n<ul>\n<li>Reworked field mapping as Display Content with real-time examples from the uploaded spreadsheet.<\/li>\n<li>Added live examples so column choices are no longer a black box.<\/li>\n<\/ul>\n\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Improved the Gutenberg block preview with real Display rows, images, source metadata, and clearer edit actions.<\/li>\n<li>Added frontend display-type polish, including table rendering for Simple Data Table displays.<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Removed the duplicate side preview while the Preview editor tab is active.<\/li>\n<li>Improved admin preview card field wrapping so emails and phone numbers do not break into vertical text.<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Limited field-role dropdowns to relevant columns so price-like roles are not mapped to names, emails, phones, or photos.<\/li>\n<li>Hid optional roles when a source does not contain matching columns.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Added a dedicated Display Editor with tabs for preview, fields, search and filters, style, data source, and publishing.<\/li>\n<li>Added in-editor CSV replacement with a visible column match summary.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Made appearance controls update the preview immediately and clarified that preview shows a sample.<\/li>\n<li>Rendered real image URLs in the admin preview.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Added visible pagination status and preview pagination controls.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Improved card layout, field label readability, and fallback titles for mixed row datasets.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Tightened smart detection so identifiers, names, dates, and quantities are not mislabeled as status.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fixed admin loading state event binding.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial MVP implementation.<\/li>\n<\/ul>","raw_excerpt":"Tabloria Searchable Displays turns spreadsheet rows into reusable searchable WordPress Displays.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/313127","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=313127"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/publishly"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=313127"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=313127"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=313127"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=313127"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=313127"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=313127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}