Untitled

 avatar
webwizards
plain_text
7 days ago
2.8 kB
7
Indexable
add_action('wp_head', 'add_unit_price_updater_script');

function add_unit_price_updater_script() {
    ?>
    <script type="text/javascript">
    // Monitor subtotal changes and update unit price
    jQuery(document).ready(function() {
        
        // Function to update unit price based on subtotal and quantity
        function updateUnitPrice(containerElement) {
            var subtotalElement = containerElement.find('.b2bking_bulkorder_form_container_content_line_subtotal_cream');
            var quantityElement = containerElement.find('.b2bking_bulkorder_form_container_content_line_qty_cream');
            var priceElement = containerElement.find('.b2bking_bulkorder_cream_sku .woocommerce-Price-amount');
            
            if (subtotalElement.length && quantityElement.length && priceElement.length) {
                // Get subtotal value from data-value attribute
                var subtotalValue = parseFloat(subtotalElement.attr('data-value'));
                
                // Get quantity value
                var quantityValue = parseInt(quantityElement.val()) || 1;
                
                // Calculate unit price
                var unitPrice = subtotalValue / quantityValue;
                
                // Update the price display
                priceElement.html('<bdi><span class="woocommerce-Price-currencySymbol">$</span>' + unitPrice.toFixed(2) + '</bdi>');
            }
        }
        
        // Use MutationObserver to watch for changes in subtotal elements
        function observeSubtotalChanges() {
            var productContainers = jQuery('.b2bking_bulkorder_form_container_content_line_cream');
            
            productContainers.each(function() {
                var container = jQuery(this);
                var subtotalElement = container.find('.b2bking_bulkorder_form_container_content_line_subtotal_cream')[0];
                
                if (subtotalElement) {
                    var observer = new MutationObserver(function(mutations) {
                        mutations.forEach(function(mutation) {
                            if (mutation.type === 'attributes' && mutation.attributeName === 'data-value') {
                                updateUnitPrice(container);
                            }
                        });
                    });
                    
                    observer.observe(subtotalElement, {
                        attributes: true,
                        attributeFilter: ['data-value']
                    });
                    
                    // Initial calculation
                    updateUnitPrice(container);
                }
            });
        }
        
        // Initialize observers
        observeSubtotalChanges();
    });
    </script>
    <?php
}
Editor is loading...
Leave a Comment