Getting Started: Product Table for WooCommerce

WooCommerce / Getting Started

Product Table for WooCommerce shows your catalog as a searchable, sortable table instead of the default grid. Use it on any page with a shortcode or Gutenberg block, or add it to shop, category, tag, search, and attribute archives.

Installation

WooCommerce must be installed and active. The plugin needs WordPress 6.0+, WooCommerce 5.0+, and PHP 7.4+.

  1. Download the zip from your purchase email or from File Downloads.
  2. In WordPress go to Plugins → Add New → Upload Plugin and upload the zip.
  3. Or unzip and copy the yh-wc-product-table folder into /wp-content/plugins/.
  4. Activate YH WC Product Table on the Plugins screen.

If WooCommerce is not active, WordPress will deactivate the plugin and show a notice. Activate WooCommerce first, then activate Product Table.

Activate your license

A license key is required for automatic updates and support.

  1. Copy the key from License keys or your purchase email.
  2. In WordPress go to WooCommerce → Product Table → License.
  3. Paste the key and save to activate it.

If the key shows as expired or “Register your copy”, see License shows expired or Register your copy.

Set table defaults

Open WooCommerce → Product Table → Table Defaults. These values apply to every table unless a shortcode or block overrides them.

SettingWhat it controls
ColumnsDefault column set and order. Pick from ID, SKU, image, name, description, price, stock, weight, dimensions, categories, tags, and add to cart.
Rows per pageHow many products show before pagination. Shortcodes cap this at 200.
DesignColour scheme: default, modern, classic, minimal, dark, green, purple, or red.
Table widthNormal (matches the shop grid) or full width.

A shortcode such as columns="sku,name,price,buy" or design="dark" always wins over these defaults.

Add a table to a page

Gutenberg block

  1. Edit a page or post.
  2. Insert the Product Table block.
  3. Use the block sidebar for columns, layout, search, sorting, filters, and add to cart.

The block renders the same table as the shortcode. Anything you can set in the sidebar can also be set as a shortcode attribute.

Shortcode

Paste this into a page, post, or widget:

[yh_wc_product_table]

That uses your Table Defaults (or the built-in defaults: image, name, summary, price, and buy). A typical catalog table:

[yh_wc_product_table columns="image,name,price,stock,buy" filters="categories,stock" sticky_header="true"]
WooCommerce product table with thumbnails, names, prices, search and add to cart

You can add the shortcode in Elementor, Divi, or any builder that accepts shortcodes.

Shop, category, and search pages

To show a table on WooCommerce archives, go to WooCommerce → Product Table → Shop Integration.

Table position

ModeWhat happens
Above gridThe table is injected above the default product grid. Both stay visible.
Below gridThe table is injected below the default product grid. Both stay visible.
Manual (shortcode only)Nothing is injected. Put [yh_wcpt_archive_table] in your archive template or page builder.

Page types

Enable each archive you want a table on. Leave columns and rows blank to use Table Defaults.

Page typeNotes
Shop pageMain shop listing.
Category pagesAutomatically filtered to the current category.
Tag pagesAutomatically filtered to the current tag.
Search resultsUses the current product search.
Attribute pagesBrand, colour, size, and other attribute archives.

Category, tag, and attribute tables inherit the current term. You do not need to pass category="" on those archives.

For Elementor Pro, Divi Theme Builder, or a custom archive template, choose Manual and add:

[yh_wcpt_archive_table]

Columns

Set columns with the columns attribute. Order in the list is the order in the table.

ColumnShows
idProduct ID
skuSKU
nameProduct name, linked to the product page
descriptionFull description
summaryShort description
imageThumbnail. Default size is 70×70. Change with image_size="150x150" or a named size such as thumbnail.
priceRegular / sale price
buyAdd to cart control
button“Show details” button (label via button_text)
categoriesLinked categories
tagsLinked tags
stockStock status / quantity
datePublish date
weightWeight
dimensionsL × W × H
cf:field_nameCustom field (post meta)
att:attribute_nameProduct attribute, e.g. att:color
tax:taxonomy_nameCustom taxonomy terms, e.g. tax:product_brand

Rename a heading with column:Heading:

[yh_wc_product_table columns="sku:Code,name:Item,price:Cost,buy:Add"]

Hide price or buy from guests:

[yh_wc_product_table columns="sku,name,price,buy" hide_columns_guest="price,buy"]

Search, pagination, and “showing X of Y” are on by default. Filters are optional dropdowns above the table.

FilterDropdown
categoriesProduct category
tagsProduct tag
stockStock status
att:nameAttribute, e.g. att:color
tax:nameCustom taxonomy
[yh_wc_product_table columns="image,name,att:color,att:size,stock,price,buy" filters="categories,att:color:Color,att:size:Size,stock:Availability" reset_button="true"]
Product table with category and stock filter dropdowns
AttributeDefaultNotes
search_boxtrue (bottom)true, false, top, bottom, both
instant_searchfalseFilter as the customer types, without pressing Enter
paginationbottomSame position values as search
load_morefalseReplace numbered pagination with a load more button
sort_bymenu_orderColumn name to sort on first load
sort_orderascasc or desc
sticky_headerfalseKeep the header visible while scrolling

Limit which products are queried before the table renders:

AttributeExample
categorycategory="clothing" — comma-separated slugs
exclude_categoryexclude_category="sale"
tagtag="organic"
include / excludeProduct IDs, comma-separated
product_typesimple, variable, grouped, external
min_price / max_pricemin_price="10" max_price="100"
in_stock_onlytrue
on_sale_onlytrue
featured_onlytrue

Variable products

variationsBehaviour
dropdownOne row for the parent. Customers pick attributes from dropdowns (default).
rowsEach variation is its own row.
falseLink through to the product page instead of adding from the table.

When using variations="rows", control the name with variation_name_format:

FormatExample
name_attributesT-Shirt – Blue, Large (default)
name_onlyT-Shirt
attributes_onlyBlue, Large
[yh_wc_product_table variations="rows" variation_name_format="attributes_only" columns="image,name,att:color,att:size,price,buy"]
Variable products listed as separate rows in a product table

Add to cart and wholesale-style tables

AJAX add to cart is on by default. Quantity inputs are off until you enable them.

AttributeValuesNotes
cart_buttonbutton, checkbox, button_checkboxCheckbox modes need a buy column
quantitiestrue / falseShow a qty field next to add to cart. This is not a column name.
ajax_carttrue / falseAdd without a full page reload
multi_addtrue / falseAdd several selected rows at once
direct_checkouttrue / falseSkip the cart and go to checkout
footer_carttrue / falseCart summary under the table
floating_carttrue / falseFloating cart button
quick_viewtrue / falseModal with product details

Wholesale-style order form:

[yh_wc_product_table columns="sku,name,stock,price,buy" cart_button="checkbox" quantities="true" multi_add="true" footer_cart="true" rows_per_page="100" width="full"]

Design and layout

TemplateLook
defaultClean, follows the theme
modernRounded, contemporary
classicSolid borders
minimalLight styling
darkDark background
green / purple / redAccent colour schemes

Width: normal (theme content width), wide, or full. Full width still depends on the theme container. If it does not break out, add:

.yh-wc-product-table-container.width-full {
    max-width: none !important;
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding: 0 20px;
}

Hide columns on smaller screens with responsive_visibility. Values are desktop or tablet — the named device is the smallest size that still shows the column:

[yh_wc_product_table columns="image,name,sku,stock,price,buy" responsive_visibility="sku:desktop,stock:tablet"]

Shortcode reference

Most-used attributes. Anything not listed here still works; the plugin’s Shortcode Examples tab under WooCommerce → Product Table has more copy-paste snippets.

AttributeDefaultNotes
columnsimage,name,summary,price,buyComma-separated. Custom headings: name:Item
rows_per_page25Max 200. Use -1 for all rows in the queried set
product_limit500Max products queried. Hard cap 1000
widthnormalnormal, wide, full
designdefaultSee design templates above
filtersoffe.g. categories,stock,att:color
lazy_loadfalseLoad rows over AJAX. Useful on large catalogs
cachefalseCache the product query
lightboxtrueClick image to enlarge
linksallall, none, or column names
custom_class—Extra CSS class on the wrapper

Search is client-side (DataTables) unless you enable lazy_load="true". For catalogs approaching the product limit, turn lazy load on so the first paint stays small.

Common mistakes

Table is empty

The shortcode only lists published WooCommerce products. Hidden, draft, or out-of-query products will not appear.

Fix: Confirm products are published, in the category/tag you filtered, and that WooCommerce is active. Relax category, in_stock_only, or include if those are set.

Add to cart does nothing

Variable products need a variation selected. Checkbox / multi-add needs a buy column. Some themes break WooCommerce cart fragments.

Fix: Keep ajax_cart="true". For variables use variations="dropdown" or rows. Include buy in columns. Test with a default theme if the button still fails.

Putting quantities in the columns list

quantities is a shortcode attribute, not a column. columns="…,quantities,buy" will not add a qty field.

Fix: Use quantities="true" and keep buy in the column list.

Shop grid never becomes a table

Shop Integration is off by default. Page-builder archives often ignore the automatic injection.

Fix: Enable the page type under Shop Integration. If the theme uses Elementor or Divi for the shop, switch to Manual and place [yh_wcpt_archive_table] in that template.

License key not saving updates

The updater talks to yoohooplugins.com. A 1 Site license only holds one activation.

Fix: Activate under WooCommerce → Product Table → License. Deactivate the old site first if you moved. See staging and multisite licenses.