-
WooCommerce Bootstrap 0.1.10
Pre-Releasereleased this
2026-03-29 14:48:50 +00:00 | 0 commits to main since this releaseFixed
- Add-to-cart button alignment in product cards (
content-product.html.twig): Addedmt-autoto card-footer so the button is always pinned to the bottom of the card, even when the product has no price (e.g., composable products)
Downloads
- Add-to-cart button alignment in product cards (
-
WooCommerce Bootstrap 0.1.9
Pre-Releasereleased this
2026-03-29 14:03:09 +00:00 | 1 commits to main since this releaseChanged
- Category tree full-width items (
category-tree-node.html.twig): Made<a>elements direct children of thelist-groupso they span the full parent/offcanvas width; moved chevron toggle inside the link as a<span>with click interception - Category tree nav wrapper (
category-tree.html.twig): Addedw-100to nav and list-group containers
Downloads
- Category tree full-width items (
-
WooCommerce Bootstrap 0.1.8
Pre-Releasereleased this
2026-03-29 13:42:50 +00:00 | 2 commits to main since this releaseChanged
- Category tree restyled (
category-tree.html.twig,category-tree-node.html.twig): Switched from custom link classes to Bootstrap's nativelist-group-item list-group-item-actionpattern with nested collapse divs for a more idiomatic Bootstrap look - Subtler active state (
wc-bootstrap.css): Replaced bold primary-colored background with light background (var(--bs-tertiary-bg)), left accent border (3px solid var(--bs-primary)), and semibold text for a less prominent highlight
Downloads
- Category tree restyled (
-
WooCommerce Bootstrap 0.1.7
Pre-Releasereleased this
2026-03-29 13:20:02 +00:00 | 3 commits to main since this releaseAdded
- Product category tree sidebar on archive/shop and single product pages: hierarchical navigation with collapsible sub-levels up to 3 levels deep, using Bootstrap 5 list-group and collapse components
wc_bootstrap_get_category_tree()(functions.php): Builds nested category array withis_active/is_ancestorflags for current page context, parent-indexed lookup for O(n) tree construction- Category tree Twig templates (
global/category-tree.html.twig,global/category-tree-node.html.twig): Recursive rendering with "All products" link, product count badges, chevron toggle buttons, andaria-current="page"accessibility - Single product sidebar (
woocommerce/single-product.php): Added responsive sidebar layout (col-lg-3+col-lg-9) with offcanvas on mobile, matching the archive page pattern - Category tree CSS (
wc-bootstrap.css): Hover states, active highlighting (primary color), chevron rotation animation, nested indentation, dark mode compatible via Bootstrap CSS variables
Changed
- Archive sidebar always visible (
woocommerce/archive-product.php): Sidebar now renders when categories exist, not only when widgets are configured. Category tree renders above any widgets.
Downloads
-
WooCommerce Bootstrap 0.1.6
Pre-Releasereleased this
2026-03-01 02:48:39 +00:00 | 5 commits to main since this releaseAdded
- PHPUnit test suite with Brain\Monkey for WordPress function mocking (27 tests, 54 assertions)
- TemplateOverrideTest: Tests for hook registration, Twig template resolution, output buffer stack (including nesting), context passing, global
$productinjection, and exception fallback - WooCommerceExtensionTest: Tests for function/filter registration,
callFunction()whitelist enforcement,doAction/applyFilters/callUserFuncoutput capture,setupProductData, and all output-capture wrappers - CI/CD test job: PHPUnit runs between lint and build-release in Gitea pipeline; test artifacts excluded from release packages
- Class stubs for
WPBootstrap\Twig\TwigServiceandWC_Productenabling isolated unit testing without WordPress/WooCommerce
Downloads
-
WooCommerce Bootstrap 0.1.5
Pre-Releasereleased this
2026-03-01 02:33:52 +00:00 | 6 commits to main since this releaseFixed
- Empty page title on catalog pages (
header.html.twig): Replacedpage_titlecontext variable (never passed by WC) with directfn('woocommerce_page_title', false)call - Missing breadcrumbs on catalog pages (
archive-product.php): Addedwoocommerce_breadcrumb()call before shop loop header - Missing product categories on catalog pages (
content-product-cat.html.twig): Renamed template from hyphen (content-product-cat) to underscore (content-product_cat) to match WC'swc_get_template()filename convention - Product grid 4 columns instead of 3 (
functions.php,loop-start.html.twig): Changed default columns from 4 to 3 for better card proportions with sidebar - Double chevron on sort dropdown (
wc-bootstrap.css): Removed conflictingappearance: autorule; setappearance: noneto let Bootstrap'sform-selectclass handle the dropdown arrow exclusively - Variable product add-to-cart button stays disabled (
variable.html.twig,variation-add-to-cart-button.html.twig): Added missingdata-product_idanddata-product_variationsattributes to form; replaced HTMLdisabledattribute on button with CSS classesdisabled wc-variation-selection-needed(WC JS only toggles CSS classes, never removes the HTML attribute) - Variable product select white background in dark mode (
wc-bootstrap.css): Increased dark mode override specificity to(0,5,1)to beat WC's.woocommerce div.product form.cart .variations selectat(0,4,3)which usesbackgroundshorthand; also overridesbackground-imagefor Bootstrap's dark-mode-aware chevron SVG - Product gallery missing main image in thumbnail strip (
product-image.html.twig): Prepend main image ID to gallery IDs using[post_thumbnail_id]|merge(gallery_image_ids)with active state on first thumbnail; added{% if thumb_url %}guard to skip invalid attachment IDs - Related/upsells products show same product repeated (
related.html.twig,up-sells.html.twig): Addedwc_setup_product_data()call before each product render andwp_reset_postdata()after loop to set global$productcorrectly for WC hooks - Grouped product add-to-cart button/pricing broken (
grouped.html.twig): Rewrote template to computequantites_requiredandshow_add_to_cart_buttonin loop (matching WC PHP logic); moved hiddenadd-to-cartinput outside conditional; addedhas_options()andis_sold_individually()checks - Downloads page empty (
downloads.html.twig): Replaced fragilefn('WC').customer.get_downloadable_products()chain with directfn('wc_get_customer_available_downloads', get_current_user_id())call
Added
- Product gallery JS (
product-gallery.js): Vanilla JS click handler for thumbnail-to-main-image swap with active state highlighting and gallery fade-in wc_setup_product_data()Twig function (WooCommerceExtension.php): Sets$GLOBALS['product']and callssetup_postdata()for correct product context in Twig loopswp_reset_postdataTwig function (WooCommerceExtension.php): Restores global post state after product loopssanitize_titleTwig filter (WooCommerceExtension.php): Matches WC PHP's lowercase attribute name handling for variation form data attributes- Product thumbnails suppressor (
product-thumbnails.html.twig): Empty template override to prevent WC's default full-size gallery images rendering below custom thumbnail row
Changed
- Whitelisted functions (
WooCommerceExtension.php): Addedwoocommerce_page_titleandwc_get_customer_available_downloadstoALLOWED_FUNCTIONS - Removed obsolete files: Deleted
PLAN.mdandSETUP.md(superseded by CLAUDE.md)
Downloads
- Empty page title on catalog pages (
-
WooCommerce Bootstrap 0.1.4
Pre-Releasereleased this
2026-03-01 00:02:53 +00:00 | 7 commits to main since this releaseSecurity
- fn() function whitelist (
WooCommerceExtension): ThecallFunction()method (exposed asfn()in Twig templates) now restricts callable functions to an explicitALLOWED_FUNCTIONSwhitelist. Previously any PHP function could be called, risking arbitrary code execution if template context were compromised. Only the 6 functions actually used in templates are permitted. - Notice data attribute escaping: Changed
{{ notice.data|raw }}to{{ notice.data|wp_kses_post }}in success, error, and notice Twig templates. Defense-in-depth against potential XSS via data attributes. - Search query escaping (
product-searchform.html.twig): Added|esc_attrfilter toget_search_query()output in the search input value attribute.
Performance
- Per-request ContextBuilder caching: New
wc_bootstrap_get_theme_context()function with static variable caching eliminates redundantContextBuilder::build()calls (10-20 DB queries each) when multiple WooCommerce render functions fire in the same request.
Changed
- Shared page shell helper: New
wc_bootstrap_render_in_page_shell()function extracts the duplicated context-injection-and-render pattern fromwc_bootstrap_render_page(),wc_bootstrap_render_product_archive(), andwc_bootstrap_render_single_product(). - Removed unused constants: Removed
WC_BOOTSTRAP_VERSIONandWC_BOOTSTRAP_URLconstants that were defined but never referenced.
Downloads
- fn() function whitelist (
-
WooCommerce Bootstrap 0.1.3
Pre-Releasereleased this
2026-02-28 21:35:45 +00:00 | 9 commits to main since this releaseAdded
- Theme screenshot showing dark mode product archive with Bootstrap 5 card grid
Downloads
-
WooCommerce Bootstrap 0.1.2
Pre-Releasereleased this
2026-02-28 21:13:54 +00:00 | 10 commits to main since this releaseFixed
- Dark mode: text inputs and textareas showing white background due to WooCommerce's
.woocommerce form .form-row .input-text(specificity0,3,1) overriding theme's checkout form rules withvar(--wc-form-color-background, #fff)fallback - Dark mode:
table-lightclass on<thead>forcing white table headers in cart, checkout review, orders, and payment methods pages - Dark mode: WooCommerce notice focus ring appearing white when
focus_populate_live_region()JS programmatically focuses alerts for screen reader accessibility - WooCommerce notice overrides not matching alerts rendered by Twig templates (added
.alert.woocommerce-*compound selectors alongside.woocommerce .woocommerce-*descendant selectors) - Order details table on thank-you page not wrapped in a card like other sections
- Thank-you page success message line-wrapping after icon due to block-level
<p>inside inline alert context
Downloads
- Dark mode: text inputs and textareas showing white background due to WooCommerce's
-
WooCommerce Bootstrap 0.1.1
Pre-Releasereleased this
2026-02-28 18:32:44 +00:00 | 11 commits to main since this releaseFixed
- Dark mode: native
<select>elements showing white background due to WooCommerce's--wc-form-color-backgroundfalling back to#fff - Dark mode: SelectWoo/Select2 dropdowns (country/state pickers) rendering with hardcoded
#fffbackgrounds, text colors, and borders - Dark mode: checkout form focus ring color for inputs, textareas, and selects
- WooCommerce notice borders not matching Bootstrap alert styles due to insufficient CSS specificity (bumped to
.woocommerce .woocommerce-*at0,2,0) - WooCommerce notice
border-top: 3px solidandbackground-color: #f6f5f8overriding Bootstrap alert colors - Double icons on WooCommerce notices (WooCommerce icon font
::beforeconflicting with Bootstrap Icons) - Product card images overlapping top rounded corners on catalog page (added
overflow-hiddento card)
Downloads
- Dark mode: native
You've already forked wc-bootstrap