jQuery(document).ready(function($) { // 1. Force show price on page load for variable products $('.single-product .variations_form').each(function() { var $form = $(this); var $price = $form.closest('.summary').find('.price'); $price.show(); $form.on('found_variation', function(e, variation) { if (variation.display_price) { $price.show(); } }); }); // 2. Prevent clicking "Browse By Categories" from navigating to the empty page (Desktop & Mobile) $(document).on('click', '.mobile-menu-wrapper .menu-item-has-children > a, .standard-menu-container .menu-item-has-children > a', function(e) { e.preventDefault(); }); // 3. Dynamic WooCommerce Cart Count in Desktop Header Pill (function initHeaderCartCounter() { function getWooCookie(name) { var match = document.cookie.match(new RegExp('(^|;\\s*)' + name + '=([^;]*)')); return match ? decodeURIComponent(match[2]) : null; } function updateCartBadge(count) { var num = parseInt(count, 10); if (isNaN(num) || num < 0) num = 0; var $cartLinks = $('.standard-menu-container .menu > li.menu-item-cart > a, .standard-menu-container .menu > li > a[href*="cart"], .menu-item-cart > a, .standard-menu-container a[href*="cart"]'); if ($cartLinks.length) { $cartLinks.each(function() { var $link = $(this); var $badge = $link.find('.kibanga-cart-badge'); if (!$badge.length) { $badge = $(''); $link.append($badge); } $badge.text(num); if (num > 0) { $badge.addClass('has-items'); } else { $badge.removeClass('has-items'); } }); } } function refreshWooCartBadge() { var count = null; // Step A: Standard WooCommerce cookie var cookieCount = getWooCookie('woocommerce_items_in_cart'); if (cookieCount !== null && cookieCount !== '') { count = cookieCount; } // Step B: WooCommerce fragments stored in sessionStorage if (count === null && window.sessionStorage) { try { for (var i = 0; i < sessionStorage.length; i++) { var key = sessionStorage.key(i); if (key && key.indexOf('wc_fragments') === 0) { var frags = JSON.parse(sessionStorage.getItem(key) || '{}'); for (var sel in frags) { var $f = $('
').html(frags[sel]); var countText = $f.find('.count, .cart-count, .cart-items').first().text(); var parsed = parseInt(countText.replace(/\D/g, ''), 10); if (!isNaN(parsed)) { count = parsed; break; } } } if (count !== null) break; } } catch (e) {} } // Step C: Fallback to any existing top bar widget or mini-cart if (count === null) { var topWidgetTxt = $('.top-header-bar .cart-totals-widget, .cart-total, .cart-contents-count').first().text(); var parsedTop = parseInt(topWidgetTxt.replace(/\D/g, ''), 10); if (!isNaN(parsedTop)) { count = parsedTop; } } updateCartBadge(count !== null ? count : 0); } // Run immediately on page load refreshWooCartBadge(); // Listen for live WooCommerce AJAX events (add to cart, remove from cart, fragments refresh) $(document.body).on('added_to_cart removed_from_cart wc_fragments_refreshed wc_fragments_loaded', function(e, fragments) { if (fragments) { for (var sel in fragments) { var $frag = $('
').html(fragments[sel]); var badgeText = $frag.find('.count, .cart-count, .cart-items').first().text(); var num = parseInt(badgeText.replace(/\D/g, ''), 10); if (!isNaN(num)) { updateCartBadge(num); return; } } } setTimeout(refreshWooCartBadge, 150); }); })(); });