Catalog: page title via woocommerce_page_title(), breadcrumbs, category
template rename (underscore), 3-column grid, single chevron on sort.
Single product: variable form data attributes + disabled CSS class fix
(WC JS only toggles CSS classes, not HTML disabled attribute), dark mode
select specificity (0,5,1) to beat WC's (0,4,3) background shorthand,
gallery main image in thumbnail strip with empty URL guard, related/
upsells setup_postdata for correct global $product, grouped product
loop logic rewrite.
Account: downloads via wc_get_customer_available_downloads().
New: product-gallery.js, sanitize_title filter, wc_setup_product_data()
and wp_reset_postdata() Twig functions, product-thumbnails.html.twig
suppressor. Removed obsolete PLAN.md and SETUP.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Override WooCommerce's .input-text background (specificity 0,3,1) with
[data-bs-theme="dark"] selector for text inputs and textareas
- Remove table-light from <thead> in cart, review-order, orders, and
payment-methods templates (forces white in dark mode)
- Add .alert.woocommerce-* compound selectors for notice overrides
outside .woocommerce wrapper ancestry
- Suppress focus ring on programmatically focused notices
(woocommerce.js focus_populate_live_region adds tabindex + focus)
- Wrap order-details product table in card matching thank-you page style
- Fix thank-you alert icon/text line wrap with d-flex align-items-center
- Bump version to 0.1.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Audit and fix 14 Twig templates for escaping bugs, CSS conflicts,
and missing Bootstrap styling:
- Fix nl2br/esc_html filter order in order details
- Add WC gallery modifier classes for zoom/photoswipe JS init
- Fix HTML entity double-encoding in headings (up-sells, cross-sells, related)
- Remove wrong 'is defined' guards on function calls
- Remove duplicate deprecated hooks in dashboard
- Add |raw to brand description HTML filter chain
- Add role="alert" for accessibility, |esc_attr on notification types
- Style mini-cart remove button as Bootstrap btn
- Make shipping form-check class conditional
- Add shop_table CSS reset and gallery opacity fallback
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WooCommerce's layout CSS fought Bootstrap's grid in three ways:
1. Float-based two-column layout (width: 48% + float) on div.images
and div.summary squeezed content inside our col-lg-6 columns.
Reset with float: none; width: 100%.
2. Nested content wrapper (.container + #primary + <main>) from
woocommerce_output_content_wrapper doubled up on the parent
theme's existing .container. Remove the hooks entirely.
3. Sale badge (position: absolute; top: -.5em; z-index: 9) escaped
the image column and blocked breadcrumb clicks. Override to
top: 0.5em; z-index: 1 and use gx-* (horizontal-only gutters)
to avoid negative margin-top on the .row.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace WooCommerce's default shop/category page rendering with a
Bootstrap 5 card grid layout featuring responsive columns, sale badges,
star ratings, and an offcanvas sidebar for filters on mobile.
Key implementation details:
- Bypass parent theme's TemplateController for product archives via
wp_bootstrap_should_render_template filter, render at template_redirect
priority 11 using the same page shell injection pattern as plugin pages
- Add archive-product.php (Bootstrap layout with optional sidebar) and
content-product.php (PHP bridge for wc_get_template_part interception)
- Inject global $product into Twig context in TemplateOverride to fix
empty price/add-to-cart/rating/sale-flash in loop sub-templates — Twig
has isolated variable scopes and cannot access PHP globals directly
- Fix pagination URLs: use get_pagenum_link() instead of ?page= query
param (WordPress uses 'paged' for archive pagination, not 'page')
- Fix double-escaped – in result count by adding |raw filter
- Reset WooCommerce float-based layout CSS (woocommerce-layout.css) for
shop pages to prevent conflicts with Bootstrap flex grid
- Register shop-sidebar widget area with Bootstrap-styled markup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Redesign navigation with endpoint icons, offcanvas-lg responsive
pattern, and sticky sidebar. Replace flat dashboard with card-based
welcome greeting (avatar) and quick-action grid. Wrap all forms
(edit-account, edit-address, lost/reset-password) in card sections
with icon headers. Restructure view-order with summary card and
status badge component. Override WooCommerce's float-based layout
and max-width constraint to let Bootstrap flex grid handle sizing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 6 - My Account (15 templates):
- Account layout with sidebar navigation (list-group) and content area
- Orders table with status badges, pagination, and responsive design
- View order with order notes as list-group items
- Address cards with edit/add buttons
- Login/Register side-by-side card layout
- Account edit, password change, downloads, payment methods forms
- Lost/reset password forms and confirmation
Phase 7 - Order Details (5 templates):
- Order details table with items, totals, and customer note
- Line item rows with refund quantity display
- Customer billing/shipping address cards
- Order tracking form
- Order again button
All order templates use WC_Order object methods only (HPOS compatible).
Bootstrap 5 components: cards, tables, list-groups, badges, forms, alerts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>