Store Design
WordPress E-Commerce with WooCommerce
Chapter 3 · Store Design
Chapters 1 and 2 covered what a product is underneath. This chapter covers how it actually gets shown to a shopper — WooCommerce's own theme-override system, the official Storefront theme, page-builder compatibility, and the store-specific shortcodes and blocks used to place shop content anywhere on the site.
WooCommerce's Own Template Override System
WordPress Intermediate/Advanced 2 already covered the WordPress template hierarchy — how single.php, page.php, and similar theme files decide how content renders. WooCommerce extends that same idea with its own parallel hierarchy: every page it renders (Shop, single product, Cart, Checkout, My Account) comes from a template file bundled inside the WooCommerce plugin itself, under woocommerce/templates/.
A theme can override any of these by copying the file into an identically-structured woocommerce/ folder inside the theme, and editing the copy:
Storefront — The Official WooCommerce Theme
Storefront is a free theme built and maintained by Automattic (the same company behind WooCommerce itself), designed specifically around WooCommerce's own template structure rather than adapted to it afterward. It isn't the only theme that works with WooCommerce — any reasonably modern WordPress theme will render a store in some form — but it's the reference implementation worth understanding first.
| Storefront (WooCommerce-native) | A general-purpose theme with basic WooCommerce support |
|---|---|
| Store layout, cart icon, and checkout flow designed around WooCommerce from the start | WooCommerce pages render, but may need real CSS work to match the theme's own design language |
| Maintained by the same team that ships WooCommerce itself — updates track each other closely | Compatibility depends entirely on that theme's own developer keeping pace with WooCommerce's changes |
| A minimal, deliberately unopinionated starting point — expected to be customized further | Often more visually distinctive out of the box, at the cost of a less predictable WooCommerce integration |
Page Builders & WooCommerce
Popular page builders (Elementor, Beaver Builder, and similar) generally offer dedicated WooCommerce widgets — a product grid, an "Add to Cart" button, a mini-cart — built specifically to read real store data rather than treating a store as static content. Elementor's own paid "Pro" tier, for example, includes a full WooCommerce Builder for customizing the product and archive templates visually, instead of copying and editing PHP template files by hand.
Store-Specific Shortcodes & WooCommerce Blocks
Two separate mechanisms exist for placing store content on any ordinary page — a legacy shortcode system, and the newer WooCommerce Blocks built for the Block Editor WordPress Fundamentals 4 already covered in depth.
| Shortcodes (legacy) | WooCommerce Blocks (current) |
|---|---|
| Plain text tags, typed or pasted in | Native Gutenberg blocks — Products, Cart, Checkout — configured through the block editor's own sidebar, matching WordPress Fundamentals 4's own block-editing workflow |
| Still fully supported — most existing stores still use some of them | The direction WooCommerce itself is actively investing in, including a newer block-based checkout |
| Configuration lives entirely in the shortcode's own attribute syntax | Configuration is visual, with live preview inside the editor |
[woocommerce_checkout] shortcode-driven page, became broadly available starting with WooCommerce 8.3 (late 2023) and has continued to mature since. New stores are increasingly built on the block-based checkout by default; Chapter 4's own cart/checkout material applies to both approaches, since the underlying order and cart logic is identical either way — only the front-end rendering mechanism differs.
Hands-On Exercises
A developer copies WooCommerce's own content-product.php into their theme's woocommerce/ folder to change how each product card looks. Six months later, a WooCommerce update fixes a bug in that same file — but the store's product cards still show the old bug. Explain why.
📄 View solutionExplain what a page builder's own WooCommerce widgets are actually doing "under the hood," according to this chapter, and why they don't eliminate the same update-safety consideration that applies to a manually copied template file.
📄 View solutionA store owner wants to display a grid of 4 products from a specific category on an ordinary WordPress page, without using the Block Editor. Which mechanism from this chapter should they use, and what would the equivalent Block Editor approach be called?
📄 View solutionChapter 3 Quick Reference
- WooCommerce renders every store page from its own template files under
woocommerce/templates/— a theme overrides one by copying it to an identical path insideyour-theme/woocommerce/ - A copied template stops receiving WooCommerce's own future updates to that file — Chapter 8's hooks are the lower-risk alternative for smaller changes
- Storefront — the official, WooCommerce-native theme, maintained by the same team as WooCommerce itself
- Page builders (Elementor, etc.) provide visual WooCommerce widgets, but still render the same underlying template system — not a separate mechanism
- Shortcodes (
[products],[woocommerce_checkout], etc.) are the legacy mechanism; WooCommerce Blocks are the current, actively-developed one, including a block-based checkout since WooCommerce 8.3 - Next chapter: Cart, Checkout & Order Flow