Wyświetlaj stan zapasów odmian dla pojedynczych rozwijanych produktów zmiennych w Wocommerce 3 [zamknięte]
Nov 25 2020
Używam opcji Pokaż stan zapasów obok każdej wartości atrybutu w kodzie odpowiedzi produktów zmiennych WooCommerce, aby wyświetlić stan zapasów odmian na liście rozwijanej atrybutu pojedynczego produktu dla stron produktów zmiennych.
Działa to dobrze, ale ładowanie produktu zajmuje zbyt dużo czasu.
Jak mogę zoptymalizować kod, aby ładował się szybciej?
Odpowiedzi
1 LoicTheAztec Nov 25 2020 at 15:37
Zamiast tego użyj następujących, które będą nieco lżejsze (więc zmienne produkty powinny ładować się szybko) :
add_filter( 'woocommerce_variation_option_name', 'customizing_variations_terms_name' );
function customizing_variations_terms_name( $term_name ){ global $product;
if( is_admin() ) return $term_name; // Only on frontend single products // Iterating through each visible product variation Ids foreach( $product->get_visible_children() as $variation_id ){ $variation = new WC_Product_Variation( $variation_id ); $stock_status = $variation->get_stock_status(); $stock_qty = $variation->get_stock_quantity(); // The attributes taxonomy key and slug value for this variation $attributes = $variation->get_attributes(); // Caution: Works only for 1 attribute set in the product if(count($attributes) == 1 ) {
$attributes_keys = array_keys($attributes);
$attr_taxonomy = str_replace('attribute_', '', reset($attributes_keys) );
if( $variation->get_attribute( $attr_taxonomy ) === $term_name ) { break; // stop the loop } } $term_name .= ' - ' . $stock_status; $term_name = $stock_qty > 0 ? $term_name . ' ('.$stock_qty.')' : $term_name;
}
return $term_name;
}