symbol sulssymbol sulssymbol suls

ווקומרס הצגת מלאי כולל במוצר וריאוציות

בעת ניהול מלאי מוצר משתנה ברמת הווריאציה, סטטוס המלאי מסווג כ"במלאי" או "אזל מהמלאי" מבלי לציין את הכמות.

בתרחישים מסוימים, מומלץ להציג את כמות המלאי הכולל עבור כל הווריאציות. לדוגמה, אם לווריאציה האדומה יש 3 יחידות במלאי, לווריאציה הכחולה יש 7 יחידות ולווריאציה של ציאן יש 10 יחידות, מומלץ להגדיר את כמות המלאי הכוללת של "מוצר האב" ל-20 (3 + 7 + 10).


/**
 * Snippet Name:	WooCommerce Display Sum Stock Quantity For Variable Product
 * Snippet Author:	suls.co.il | Ofir Sulimani
 */
# CALCULATE CUMULATIVE STOCK
function suls_cumulative_stock_variations( $product ) {
    if ( $product->get_type() == 'variable' && ! $product->get_manage_stock() ) {
      $cumulative_stock = 0;
        foreach ( $product->get_available_variations() as $key ) {
            $variation = wc_get_product( $key['variation_id'] );
            $cumulative_stock += $variation->get_stock_quantity() ? $variation->get_stock_quantity() : 0;
        }
    }
   return $cumulative_stock;
}
 
# SET VARIABLE PRODUCT STOCK QUANTITY
add_filter( 'woocommerce_get_stock_html', 'suls_variable_product_cumu_stock', 9999, 2 );
 
function suls_variable_product_cumu_stock( $html, $product ) {
   $availability = $product->get_availability();
   if ( $product->get_type() == 'variable' && empty( $availability['availability'] ) ) {
      ob_start();
      wc_get_template(
         'single-product/stock.php',
         array(
            'product' => $product,
            'class' => suls_cumulative_stock_variations( $product ) > 0 ? 'in-stock' : 'out-of-stock',
            'availability' => sprintf( __( '%s in stock', 'woocommerce' ), suls_cumulative_stock_variations( $product ) ),
         )
      );
      return ob_get_clean();
   }
   return $html;
}
 
# SHOW STOCK IN SINGLE VARIABLE PRODUCT PAGE ON Before >> add to cart button
 
add_action( 'woocommerce_before_add_to_cart_form', 'suls_stock_for_variable_products' );
 
function suls_stock_for_variable_products() {
   global $product;
   $availability = $product->get_availability();
   if ( $product->get_type() == 'variable' && empty( $availability['availability'] ) ) {
      echo wc_get_stock_html( $product );
   }
}

עוד מאמרים מעניינים