So ändern Sie den Verfügbarkeitstext „Lagerverwaltung“ auf einer einzelnen Produktseite basierend auf unterschiedlichen Bedingungen in WooCommerce

Lesezeit: 2 Minuten

So andern Sie den Verfugbarkeitstext „Lagerverwaltung auf einer einzelnen Produktseite
Alicja Grabska

Ich versuche das zu ändern stock management Verfügbarkeitstext auf einer einzelnen Produktseite basierend auf unterschiedlichen Bedingungen in WooCommerce.

Es gibt 5 Situationen, je nachdem, ob „Lagerverwaltung auf Produktebene aktivieren“ aktiviert ist on oder off.

  1. Eingeschaltet, Menge: 0
  2. Eingeschaltet, Menge: 2
  3. Eingeschaltet, Menge: 3+
  4. Ausgeschaltet, Ausverkauft
  5. Ausgeschaltet, auf Lager

Ich benutze

add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability( $availability, $_product ) {
   global $product;

    // Case 3
    if ( $_product->is_in_stock() ) {
        $availability['availability'] = __('3. Turned on, Quantity: 3+', 'woocommerce');
    }

    // Case 2
    if ( $_product->is_in_stock() && $product->get_stock_quantity() <= 2 ) {
        $availability['availability'] = sprintf( __('2. Turned on, Quantity: 2', 'woocommerce');
    }

   // Case 5
    if ( $_product->is_in_stock() && $product->get_stock_quantity() <= 0 ) {
        $availability['availability'] = sprintf( __('5. Turned off, In stock', 'woocommerce'));
    }
    
    // Case 4 and 1 - out of stock
    if ( ! $_product->is_in_stock() ) {
        $availability['availability'] = __('4. Turned off, Out of stock / 1. Turned on, Quantity: 0', 'woocommerce');
    }

    return $availability;
}

Aber wie funktioniert das bei variablen Produkten?

Für einfache Produkte funktioniert es perfekt, aber für variable Produkte zeigen 2 (von 5) Situationen falsche Ergebnisse:

  1. Eingeschaltet, Menge: 0 [Works ok]
  2. Eingeschaltet, Menge: 2 [Wrong – shows case no.5]
  3. Eingeschaltet, Menge: 3+ [Wrong – shows case no.5]
  4. Ausgeschaltet, Ausverkauft [Works ok]
  5. Ausgeschaltet, auf Lager [Works ok]

wenn $product->get_stock_quantity() <= 0 als $_product->is_in_stock() wird immer falsch sein, weil die Aktiennummer unter 0 oder gleich 0 ist, also gibt es den Fehler in Ihrer Logik.

Es ist auch nicht notwendig, es zu verwenden und zu mischen global $product und $_product. Weil $_product enthält bereits das Produktobjekt.

  • $product->managing_stock() könnte nützlich sein

Sie könnten also stattdessen verwenden:

// Change In Stock Text
function filter_woocommerce_get_availability( $availability, $product ) {       
    // Managing stock is activated
    if ( $product->managing_stock() ) {
        // Stock quantity
        $stock_quantity = $product->get_stock_quantity();
        
        // Compare
        if ( $stock_quantity <= 0 ) {
            $availability['availability'] = __('1. Turned on, Quantity: less then or equal to 0', 'woocommerce' );
        } elseif ( $stock_quantity > 0 && $stock_quantity <= 2 ) {
            $availability['availability'] = __('2. Turned on, Quantity: 1 or 2', 'woocommerce' );           
        } elseif ( $stock_quantity > 3 )  {
            $availability['availability'] = __('3. Turned on, Quantity: 3+', 'woocommerce' );
        }
    } else {
        // In stock
        if ( $product->is_in_stock() ) {
            $availability['availability'] = __('4. Turned off, In stock', 'woocommerce' );      
        } else {
            $availability['availability'] = __('5. Turned off, Out of stock', 'woocommerce' );              
        }
    }

    return $availability;
}
add_filter( 'woocommerce_get_availability', 'filter_woocommerce_get_availability', 10, 2 );

1004750cookie-checkSo ändern Sie den Verfügbarkeitstext „Lagerverwaltung“ auf einer einzelnen Produktseite basierend auf unterschiedlichen Bedingungen in WooCommerce

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy