• v0.1.5 784b400c46

    WooCommerce Bootstrap 0.1.5
    All checks were successful
    Create Release Package / PHP Lint (push) Successful in 44s
    Create Release Package / Build Release (push) Successful in 52s
    Pre-Release

    magdev released this 2026-03-01 02:33:52 +00:00 | 1 commits to main since this release

    Fixed

    • Empty page title on catalog pages (header.html.twig): Replaced page_title context variable (never passed by WC) with direct fn('woocommerce_page_title', false) call
    • Missing breadcrumbs on catalog pages (archive-product.php): Added woocommerce_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's wc_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 conflicting appearance: auto rule; set appearance: none to let Bootstrap's form-select class handle the dropdown arrow exclusively
    • Variable product add-to-cart button stays disabled (variable.html.twig, variation-add-to-cart-button.html.twig): Added missing data-product_id and data-product_variations attributes to form; replaced HTML disabled attribute on button with CSS classes disabled 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 select at (0,4,3) which uses background shorthand; also overrides background-image for 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): Added wc_setup_product_data() call before each product render and wp_reset_postdata() after loop to set global $product correctly for WC hooks
    • Grouped product add-to-cart button/pricing broken (grouped.html.twig): Rewrote template to compute quantites_required and show_add_to_cart_button in loop (matching WC PHP logic); moved hidden add-to-cart input outside conditional; added has_options() and is_sold_individually() checks
    • Downloads page empty (downloads.html.twig): Replaced fragile fn('WC').customer.get_downloadable_products() chain with direct fn('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 calls setup_postdata() for correct product context in Twig loops
    • wp_reset_postdata Twig function (WooCommerceExtension.php): Restores global post state after product loops
    • sanitize_title Twig 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): Added woocommerce_page_title and wc_get_customer_available_downloads to ALLOWED_FUNCTIONS
    • Removed obsolete files: Deleted PLAN.md and SETUP.md (superseded by CLAUDE.md)
    Downloads