Guten Morgen liebe Community,
ich hab bereits die Suche bemüht, bin aber nicht fündig geworden. Vor kurzem ist uns aufgefallen, dass sich der Preis auf der Single-Produkt Seite nicht mehr aktualisiert.
Einmal schnell zum System: wir nutzen WordPress 5.7.2, WooCommerce 5.4.1, Product Bundles 6.7.2 und Advanced Custom Fields PRO 5.9.8.
Link zu Beispielprodukt
Das Beispiel Produkt ist ein Produkt Bundle, bestehend aus mehreren (nicht optionalen) variablen Produkten, für die je nach ausgewählter Größe eine Anzahl hinterlegt ist. Da Product Bundles keine Möglichkeit bietet, out-of-the-box Größen anzugeben, haben wir die Größenauswahl mit Advanced Custom Fields umgesetzt. Hinter jeder Größe steckt also ein Array mit der Anzahl der verschiedenen variablen Produkte. Ändere ich die Größe des Produts werden die Input Felder für die Anzahl durchaus angepasst, der Preis hingegen aktualisiert sich nicht.
Hier der Code, der dafür verantwortlich sein sollte:
if($('.waehle-deine-groesse').length > 0){
$('input[name="bundle_groesse"]').val($('.waehle-deine-groesse .g-dot').first().text());
$('.waehle-deine-groesse .g-dot').on('click', function(){
$('input[name="bundle_groesse"]').val($(this).text());
/* reset */
$('.woocommerce-variation.bundled_item_cart_details .tmp-lf-notification').remove();
$('.woocommerce-variation.bundled_item_cart_details .tmp-lf-qty-text').remove();
$('button.single_add_to_cart_button.bundle_add_to_cart_button').attr('disabled', false);
$('.g-dot.g-active').removeClass('g-active');
$(this).addClass('g-active');
/* info */
var groessen = $(this).attr('data-groessen-array');
var groessen_array = groessen.split('-');
var qty_fields = $('.bundled_product:not(.bundled_item_optional) .quantity');
var bundled_variations = $('.singlevariation-wrap');
bundled_variations.each(function(i) {
var all = $(this).find('label input');
//console.log('index is: '+i);
all.each(function() {
var this_stock = $(this).attr('data-stock-variation');
//console.log('stock: '+this_stock+' size: '+groessen_array[i]);
if(this_stock.toNum() < groessen_array[i]) {
$(this).parent().removeClass('lf-instock').addClass('lf-outofstock');
}
});
});
//console.log(groessen);
groessen_array.forEach(function(item, index){
var selectItem = $(bundled_variations[index]).prev().find('select');
console.log(selectItem);
var currentStock = $(bundled_variations[index]).find('label input:checked').attr('data-stock-variation');
console.log('tst: ' + currentStock);
var backorders = $(bundled_variations[index]).find('label input:checked').attr('data-backorders');
var stockStatus = $(bundled_variations[index]).find('label input:checked').attr('data-stock-status');
var supplier = $(bundled_variations[index]).find('label input:checked').attr('data-supplier');
//console.log($(qty_fields[index]).find('input.qty').val());
if(stockStatus === 'instock' || stockStatus === 'onbackorder'){
$(qty_fields[index]).find('input.qty').val(groessen_array[index]);
$(qty_fields[index]).find('input.qty').trigger('change');
// console.log('val: '+$(qty_fields[index]).find('input.qty').val());
} else {
if(currentStock < parseInt(item) || (currentStock === '' && stockStatus === 'outofstock')){
/* aktueller Bestand ist niedriger als die vorgesehne Menge für die ausgewählte Größe */
/* wenn backorders allowed - Möglichkeit dennoch da, die Menge in den Warenkorb zu legen */
/* wenn nicht, dann keine Möglichkeit */
if(backorders != 'allowed'){
/* disable add to cart btn */
$('button.single_add_to_cart_button.bundle_add_to_cart_button').attr('disabled', true);
// $(qty_fields[index]).parent().siblings('.woocommerce-variation.bundled_item_cart_details').find('.woocommerce-variation-availability').append('<div class="tmp-lf-notification"><p><i>Diese Farbe ist ausverkauft.</i></p></div>');
/* ersetzt durch folgende Funktion, damit die Vorrätigkeit beim Bundle ausgeblendet werden kann */
$('<div class="tmp-lf-notification"><p><i>Diese Farbe ist ausverkauft.</i></p></div>').insertAfter($(qty_fields[index]).parent().siblings('.woocommerce-variation.bundled_item_cart_details').find('.woocommerce-variation-availability p'));
} else {
$(qty_fields[index]).find('input.qty').val(groessen_array[index]);
$(qty_fields[index]).find('input.qty').trigger('change');
// $(qty_fields[index]).parent().siblings('.woocommerce-variation.bundled_item_cart_details').find('.woocommerce-variation-availability').append('<div class="tmp-lf-notification"><p><i>Diese Farbe bestellen wir gerade nach, die Lieferzeit verlängert sich um ca. 2 Wochen. Du erhältst ' + item + ' davon.</i></p></div>');
if(supplier == 'SCH') {
$('<div class="tmp-lf-notification"><p><i>Du erhältst ' + item + ' davon.</i></p></div>').insertAfter($(qty_fields[index]).parent().siblings('.woocommerce-variation.bundled_item_cart_details').find('.woocommerce-variation-availability p'));
} else {
$('<div class="tmp-lf-notification"><p><i>Diese Farbe bestellen wir gerade nach, die Lieferzeit verlängert sich um ca. 2 Wochen. Du erhältst ' + item + ' davon.</i></p></div>').insertAfter($(qty_fields[index]).parent().siblings('.woocommerce-variation.bundled_item_cart_details').find('.woocommerce-variation-availability p'));
}
}
} else {
// $(qty_fields[index]).parent().siblings('.woocommerce-variation.bundled_item_cart_details').find('.woocommerce-variation-availability p').append('<p class="tmp-lf-qty-text"><i> Du erhältst ' + item + ' davon.</i></p>');
$('<p class="tmp-lf-qty-text"><i> Du erhältst ' + item + ' davon.</i></p>').insertAfter($(qty_fields[index]).parent().siblings('.woocommerce-variation.bundled_item_cart_details').find('.woocommerce-variation-availability p'));
$(qty_fields[index]).find('input.qty').val(groessen_array[index]);
$(qty_fields[index]).find('input.qty').trigger('change');
}
}
});
});
}
Alles anzeigen
Freu mich über jede Hilfe, da ich komplett auf dem Schlauch stehe und evtl. auch den Wald vor lauter Bäumen nicht mehr sehe.