<?php add_action('wp_footer', function(){
if(!is_product()) return;
?>
<script>
(function(){
function textFromHtml(html){ var d=document.createElement('div'); d.innerHTML=html||''; return (d.textContent||d.innerText||'').trim(); } function renderAllVariations(){
var form = document.querySelector('form.variations_form');
if(!form) return false;
var select = form.querySelector('.variations select');
if(!select) return false;
var raw = form.getAttribute('data-product_variations');
var vars = [];
try{ vars = raw ? JSON.parse(raw) : []; }catch(e){ vars = []; }
if(!Array.isArray(vars)||!vars.length) return false;
var key = select.name;
vars = vars.slice().sort(function(a,b){
return (parseFloat((a.attributes&&a.attributes[key])||'')||0)-(parseFloat((b.attributes&&b.attributes[key])||'')||0);
});
var wrap = form.querySelector('.hpdc-variation-list');
if(!wrap){
wrap = document.createElement('div');
wrap.className = 'hpdc-variation-list';
var anchor = form.querySelector('.single_variation_wrap')||form.querySelector('.woocommerce-variation-add-to-cart')||form.lastElementChild;
if(anchor&&anchor.parentNode) anchor.parentNode.insertBefore(wrap,anchor); else form.appendChild(wrap);
}
wrap.innerHTML='';
vars.forEach(function(v){
var value=(v.attributes&&v.attributes[key])||'';
if(!value) return;
var opt=Array.from(select.options).find(function(o){return o.value===value;});
var label=opt?opt.textContent.trim():value;
var price=textFromHtml(v.price_html||'');
var inStock=!!v.is_in_stock;
var card=document.createElement('div');
card.className='hpdc-var-card'+(inStock?'':' is-out');
card.dataset.value=value;
card.innerHTML='<span class="hpdc-var-name">'+label+'</span><span class="hpdc-var-price">'+price+'</span>';
card.addEventListener('click',function(){
if(card.classList.contains('is-out')) return;
form.querySelectorAll('.hpdc-var-card').forEach(function(c){c.classList.remove('is-selected');});
card.classList.add('is-selected');
select.value=value;
if(window.jQuery){window.jQuery(select).trigger('change');}
else{select.dispatchEvent(new Event('change',{bubbles:true}));}
});
wrap.appendChild(card);
});
if(window.jQuery){
window.jQuery(document).off('show_variation.hpdc').on('show_variation.hpdc',function(e,variation){
var btn=document.querySelector('.single_add_to_cart_button');
if(btn&&variation&&variation.price_html){btn.textContent='ADD TO BAG \u2014 '+textFromHtml(variation.price_html);}
});
window.jQuery(document).off('hide_variation.hpdc reset_image.hpdc').on('hide_variation.hpdc reset_image.hpdc',function(){
var btn=document.querySelector('.single_add_to_cart_button');
if(btn) btn.textContent='SELECT AN OPTION';
});
}
var firstCard=wrap.querySelector('.hpdc-var-card:not(.is-out)')||wrap.querySelector('.hpdc-var-card');
if(firstCard) firstCard.click();
return wrap.children.length>0;
}
function boot(){
var tries=0;
var timer=setInterval(function(){
tries++;
var done=renderAllVariations();
if(done||tries>=20) clearInterval(timer);
},300);
}
if(window.jQuery){
window.jQuery(window).on('load',function(){ setTimeout(boot,100); });
} else {
window.addEventListener('load', function(){ setTimeout(boot,100); });
}
})();
<\/script>
<?php
}, 20);