📄 Plugin Documentation

Tably — Smart Product Table
for WooCommerce

Show your catalog as a fast, searchable product table. Live search, category filter, sorting, AJAX and bulk add to cart, a Gutenberg block, and clean mobile cards — all lightweight, with no jQuery.

● GPL v2 or later ● WordPress 6.0+ ● PHP 7.4+ ● Gutenberg Block ● Mobile Ready ● HPOS Compatible
01 — Introduction

What is Tably?

Tably turns your WooCommerce catalog into a fast, scannable product table. Shoppers can search, filter by category, sort, and add products to the cart — one by one or in bulk — without leaving the page and without a single page reload.

It is built for B2B, wholesale, and catalog stores, where buyers know what they want and need to order quickly. Tably is lightweight by design: vanilla JavaScript only (no jQuery), and its CSS/JS load only on pages that actually contain a table.

📋
Interactive Product Table
Image, name, SKU, price, stock, and add to cart columns — pick the ones you need.
Free
🔎
Live Search, Filter & Sort
AJAX-powered toolbar. Results update instantly with no page reload.
Free
🛒
AJAX & Bulk Add to Cart
Quantity input per row, plus select-many and add them all in one click.
Free
📱
Mobile Stacked Cards
On phones every row becomes a clean card. Prefer scrolling? One setting switches it.
Free
🧱
Gutenberg Block
Build tables visually with a live editor preview — no shortcode needed.
Free
🎨
Three Table Styles
Clean, striped, or bordered. Inherits your theme fonts and button styles.
Free
💡
Self-hosted & privacy-friendly

Tably makes no external requests and stores nothing outside your own database. Settings live in a single option (tably_settings).

02 — Getting Started

System Requirements

🌐
WordPress
6.0 or higher
🛍️
WooCommerce
7.0+ (tested to 9.4)
🐘
PHP
7.4 or higher
  • WooCommerce must be installed and active. If it is missing, Tably shows an admin notice and does not load.
  • Compatible with WooCommerce High-Performance Order Storage (HPOS).
  • Works with any theme and any page builder that supports shortcodes (Elementor, Divi, etc.).
03 — Getting Started

Installation

1

Upload the plugin

Go to Plugins → Add New → Upload Plugin and choose the tably-for-woocommerce.zip file. Or upload the folder to /wp-content/plugins/ via FTP.

2

Activate

Click Activate. Default settings are created automatically (5 columns, 20 products per page, AJAX add to cart).

3

Open Tably

A new Tably menu appears in the WordPress sidebar. General holds all display and behavior settings.

⚠️
WooCommerce first

Install and activate WooCommerce before Tably. The plugin header also declares WooCommerce as a required plugin, so WordPress 6.5+ will prompt you automatically.

04 — Getting Started

Quick Start

1

Choose your defaults

Go to Tably → General, pick columns, table style, and how many products per page. Click Save changes.

2

Add a table to a page

Edit any page and add the Tably Product Table block — or paste the shortcode [spt_table].

3

Publish and view

Visit the page. Search, filter, sort, and add to cart — everything works over AJAX.

Tably → General
General
Shortcodes
Stats
Pro Features
General
Save changes
Table style
Visual appearance of table rows and borders.
Clean ▾
Products per page
Number of rows shown before pagination.
20
Mobile layout
How the table looks on small screens.
Stacked cards ▾
✅
That is all it takes

No page setup wizard and no extra pages are created. A table appears only where you place the block or shortcode.

05 — Features

Columns & Table Styles

Tably offers six columns. Set the default set in Tably → General → Columns, or override per table with the columns attribute.

ColumnShows
imageProduct thumbnail (linked to the product page)
nameProduct name, a short description excerpt, and a “Variable” badge for variable products
skuSKU, or a dash when empty
priceCurrent price including sale price formatting
stockIn Stock, “N left” (5 or fewer, when stock is managed), or Out of Stock
cartQuantity input and Add to Cart button
Front end — product table
ProductSKUPriceStockAdd to Cart
Canvas BackpackBP-210$49.00In StockAdd
Steel Water BottleWB-044$18.503 leftAdd
Desk LampDL-905$32.00Out of StockUnavailable

Table styles

Choose a style under General → Table style, or per table with style="...".

  • Clean — minimal borders, soft header (default)
  • Striped — dark header with alternating rows
  • Bordered — full grid lines

Image size

The image column can use Small (thumbnail), WooCommerce default, or Medium. Choose a larger size only if you need sharper images; smaller keeps pages lighter.

06 — Features

Search, Filter & Sort

The toolbar above the table is built from three controls. Each can be turned on or off globally in General → Toolbar features or per table.

🔍
Live search
Type to filter products instantly. Results load over AJAX.
Free
🗂️
Category filter
Dropdown of product categories with product counts.
Free
↕️
Sort dropdown
Default, Name A→Z / Z→A, Price low→high / high→low, Newest, Best selling, Top rated.
Free
🔢
Results count
A live “N products” counter that screen readers announce politely.
Free

Pagination is also AJAX-powered, so changing pages never reloads the browser.

💡
Hide the toolbar entirely

For a simple fixed list, use [spt_table ids="12,45,89" search="no" filter="no" sort="no"].

07 — Features

Add to Cart & Bulk Add

Per-row add to cart

Each row has a quantity input and an Add button. The quantity maximum follows the product’s managed stock quantity when one is set.

ModeBehavior
AJAXAdds without a reload and shows a toast notification with a View Cart link (default).
DirectUses the standard WooCommerce add-to-cart link and redirect behavior.

Bulk add to cart

Tick the checkbox on any number of rows (or use select all) and a bar appears showing how many items are selected, with an Add selected to cart button.

  • Bulk selection is available for simple, in-stock, purchasable products.
  • Variable and out-of-stock products show a dash instead of a checkbox.
  • Turn it off for one table with bulk="no".
ℹ️
Variable products

Variable products show a Select options link to their product page. Inline variation selection is part of Tably Pro.

08 — Features

Mobile Layout

On screens up to 768px wide, wide tables are hard to read. Tably gives you two options, set in General → Mobile layout:

OptionResult
Stacked cardsEach row becomes a card. Every value gets its own labeled line (PRICE, STOCK, SKU…). No horizontal scrolling. Default.
ScrollKeeps the table layout and lets visitors scroll sideways.
Mobile — stacked cards
ProductCanvas Backpack
Price$49.00
StockIn Stock
Add to CartAdd

Override it for a single table with mobile="stack" or mobile="scroll". The card layout works with AJAX search, filtering, and pagination too.

09 — Features

Gutenberg Block

Search for Tably Product Table in the block inserter (it is in the WooCommerce category). The editor shows a live preview that matches the front end exactly, because both are rendered by the same server-side code.

Sidebar panelControls
ProductsCategory, tag slug, product IDs, products per page, order by, order
ColumnsPick any of the six columns (leave empty to use your global columns)
DisplaySearch, sort, category filter, bulk add, table style, mobile layout
💡
“Use global setting”

Every option defaults to Use global setting, so a plain block always follows Tably → General. Change an option only when one table should look different.

The block supports wide and full alignment. Prefer shortcodes? They work exactly as before.

10 — Features

Template Override

To customize the table markup, copy templates/table.php from the plugin to your theme:

Path
// Copy this file…
/wp-content/plugins/tably-for-woocommerce/templates/table.php
// …to your theme
/wp-content/themes/your-theme/tably/table.php
⚠️
Only table.php is overridable

Row output (table-row.php) and pagination are loaded from the plugin directly. To change what a row shows, use the tably_row_cell filter described under Hooks & Filters.

When you update Tably, compare your copy with the plugin’s latest table.php so you do not miss new markup.

11 — Reference

Shortcode

Tably registers two names for the same shortcode. Use whichever you prefer:

[spt_table]
Short alias — this is the one shown in Tably → Shortcodes.
[tably-for-woocommerce]
Full name — identical output.

Examples

[spt_table category="electronics" limit="15"]
Filter by category
[spt_table columns="image,name,sku,price,cart"]
Custom column set
[spt_table ids="12,45,89" search="no"]
Specific products, no search bar
[spt_table orderby="price" order="asc" style="striped"]
Price-sorted, striped style
[spt_table mobile="scroll" bulk="no"]
Horizontal scroll on mobile, no bulk selection

All attributes

AttributeDefaultDescription
limit20Products per page (1–200)
columnsimage,name,price,stock,cartComma-separated list from: image, name, sku, price, stock, cart
category—Category slug or ID
tag—Product tag slug or ID
ids—Comma-separated product IDs
orderbymenu_ordermenu_order, title, date, price, popularity, rating, rand
orderdescasc or desc
searchyesShow the search bar: yes or no
sortyesShow the sort dropdown: yes or no
filteryesShow the category filter: yes or no
stylecleanclean, striped, or bordered
mobilestackstack (cards) or scroll
bulkyesBulk add to cart: yes or no
ℹ️
Defaults come from your settings

Search, sort, filter, style, columns, limit, and mobile defaults are read from Tably → General. An attribute on the shortcode always wins.

12 — Reference

All Settings

All settings live under Tably → General and are saved in one option, tably_settings. You need the manage_woocommerce capability to change them.

SettingDefaultOptions
columnsimage, name, price, stock, cartimage, name, sku, price, stock, cart
table_stylecleanclean, striped, bordered
limit201 – 200 products per page
image_sizethumbnailthumbnail, woocommerce_thumbnail, medium
show_searchyesyes / no
show_sortyesyes / no
show_filteryesyes / no
add_to_cartajaxajax, direct
mobile_layoutstackstack, scroll

Other admin pages: Shortcodes (copy-ready examples and the attribute reference) and Stats (pages that currently use a table). Pro Features previews what Tably Pro adds.

13 — Reference

Hooks & Filters

Tably keeps its hook surface small. These filters are the supported extension points.

tably_columns

Filter the active column list before the table is rendered — for example, to add a custom column key.

PHP
add_filter( 'tably_columns', function ( $columns ) {
    $columns[] = 'brand';
    return $columns;
} );

tably_row_cell

Output the cell content for any column key that is not one of the six built-in columns. Receives the default output, the column key, and the WC_Product.

PHP
add_filter( 'tably_row_cell', function ( $output, $col, $product ) {
    if ( 'brand' === $col ) {
        return esc_html( $product->get_meta( '_brand' ) );
    }
    return $output;
}, 10, 3 );
⚠️
Escape your output

Output from tably_row_cell is printed as-is. Always escape it with esc_html(), esc_url(), or wp_kses_post().

tably_pro_row_cart_cell

Replaces the “Select options” link for variable products. Used by Tably Pro for inline variation dropdowns.

To add a custom column key, also make sure it is included in the shortcode columns attribute, or add it through tably_columns.

14 — Reference

Tably Pro

Tably is fully functional for free. Tably Pro is a separate add-on for stores that want more power. You can preview it in Tably → Pro Features.

🎛️
Variable Inline Select
Choose size, color, or any attribute directly in the row.
🔒 Pro
🏪
Shop / Archive Replace
Replace the default shop grid with the Tably table.
🔒 Pro
📤
CSV Import / Export
Move your table setups and product data in and out.
🔒 Pro
➕
Custom Columns
Weight, dimensions, ACF, and meta columns.
🔒 Pro
📑
Saved Order Templates
Let customers reorder their favorite lists in one click.
🔒 Pro
👁️
Quick View Popup
Preview any product in a popup without leaving the table.
🔒 Pro
🧰
Advanced AJAX Filters
Price, attributes, stock, and on-sale filters with live counts.
🔒 Pro
🔐
Role-Based Pricing & Visibility
Show or hide prices and buttons by user role or login status.
🔒 Pro

Learn more at webtend.net/tably-pro.

15 — FAQ

Frequently Asked Questions

Does it work with variable products?
Variable products show a Select options link to the product page. Inline variation selection inside the table is available in Tably Pro.
Will it slow down my site?
No. Tably’s CSS and JavaScript load only on pages that contain a table, and the JavaScript is plain vanilla JS with no jQuery dependency.
Can I put multiple tables on one page?
Yes. Every table gets its own unique ID and works independently — search, filter, and pagination in one table never affect another.
Is it compatible with Elementor, Divi, or other page builders?
Yes. Use the shortcode in any shortcode or text widget. In the block editor you can use the Tably Product Table block instead.
Is it compatible with WooCommerce HPOS?
Yes. Tably declares compatibility with High-Performance Order Storage.
How do I customize the table’s appearance?
Pick a style under General → Table style. For deeper changes, override table.php in your theme (see Template Override) or add your own CSS targeting the .tably- classes.
Why do some products have no checkbox for bulk add?
Bulk selection is limited to simple, in-stock, purchasable products. Variable and out-of-stock products cannot be added in bulk.
Is the plugin translation ready?
Yes. All strings use the tably-for-woocommerce text domain and a .pot file is included in /languages.
How do I get support?
Use the WordPress.org support forum. Please include your WordPress, WooCommerce, and PHP versions, your theme, and a clear description of the issue.
16 — Changelog

Version History

1.0.2
NewFix
Gutenberg block “Tably Product Table” with live editor preview
Mobile stacked card layout, with a Mobile layout setting and a mobile shortcode attribute
Optional, dismissible review prompt in the Tably admin
Pro Features tab and sidebar upgrade button
Undefined array key warning on the General settings page
Admin menu icons not displaying
Translation template (.pot) was empty
1.0.1
NewImproved
Bulk add to cart with row checkboxes
Variable product inline variation select
Tested with WooCommerce 9.4 and WordPress 7.1
1.0.0
Initial release
AJAX filtering, searching, sorting, and pagination
AJAX add to cart with toast notification
Clean, striped, and bordered table styles
Template override support and WooCommerce HPOS compatibility