Fügen Sie eine Gebühr basierend auf der Höhe der Einkaufswagenartikel in Woocommerce hinzu

Lesezeit: 4 Minuten

Fugen Sie eine Gebuhr basierend auf den Abmessungen der Warenkorbartikel
KD_1983

Ich versuche eine Funktion zu finden, die dem Warenkorb automatisch eine Gebühr hinzufügt, wenn die Höhe der darin enthaltenen Produkte 2,9 cm überschreitet.

Ich verwende Woocommerce für unseren einfachen gemeinnützigen Comic-Buchladen. Wir verwenden in Schweden standardmäßig den Versand nach Gewicht, mit einer Sperrgebühr, wenn etwas 3 cm oder mehr beträgt.

Ich habe versucht, diese Antwort von LoicTheAztec in Bezug auf Gebühren basierend auf dem Gesamtgewicht des Einkaufswagens zu ändern, aber ich weiß wirklich nicht, was ich tue, da ich nach dem Speichern des Codes eine leere Seite erhalte.

Der Code, den ich zu ändern versuche, ist dieser:

add_action( 'woocommerce_cart_calculate_fees', 'shipping_weight_fee', 30, 1 );
function shipping_weight_fee( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Convert cart weight in grams
    $cart_weight = $cart->get_cart_contents_weight() * 1000;
    $fee = 50; // Starting Fee below 500g

    // Above 500g we add $10 to the initial fee by steps of 1000g
    if( $cart_weight > 1500 ){
        for( $i = 1500; $i < $cart_weight; $i += 1000 ){
            $fee += 10;
        }
    }
    // Setting the calculated fee based on weight
    $cart->add_fee( __( 'Weight shipping fee' ), $fee, false );
}

Meine Erfahrung mit PHP ist nicht mehr als das Einfügen von Aktionen in die functions.php meines Child-Themes.

Ich schätze jede Hilfe, die ich bekommen kann.

Fugen Sie eine Gebuhr basierend auf der Hohe der Einkaufswagenartikel
LoicTheAztec

Der folgende Code fügt eine bestimmte Gebühr hinzu, wenn ein Artikel im Einkaufswagen eine Höhe von bis zu 3 cm hat (Die Maßeinheitseinstellung in Woocommerce muss in sein cm):

add_action( 'woocommerce_cart_calculate_fees', 'shipping_height_fee', 10, 1 );
function shipping_height_fee( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Your settings (here below)
    $height = 3; // The defined height in cm (equal or over)
    $fee    = 50; // The fee amount
    $found  = false; // Initializing

    // Loop through cart items
    foreach( $cart->get_cart() as $cart_item ){
        if( $cart_item['data']->get_height() >= $height ) {
            $found = true;
            break; // Stop the loop
        }
    }
    // Add the fee
    if( $found ) {
        $cart->add_fee( __( 'Height shipping fee' ), $fee, false );
    }
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.


Zusatz: Code basierend auf der Gesamthöhe der Artikel im Einkaufswagen:

add_action( 'woocommerce_cart_calculate_fees', 'shipping_height_fee', 10, 1 );
function shipping_height_fee( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Your settings (here below)
    $target_height = 3; // The defined height in cm (equal or over)
    $total_height  = 0; // Initializing
    $fee           = 50; // The fee amount

    // Loop through cart items
    foreach( $cart->get_cart() as $cart_item ){
        $total_height += $cart_item['data']->get_height() * $cart_item['quantity'];
    }
    // Add the fee
    if( $total_height >= $target_height ) {
        $cart->add_fee( __( 'Height shipping fee' ), $fee, false );
    }
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

  • Ich habe ein Problem gefunden … Ich war wahrscheinlich in meiner Problembeschreibung unklar. Im Moment wird die Gebühr nur zum Warenkorb hinzugefügt, wenn ein Artikel hinzugefügt wird, der größer als 3 cm ist, wenn ich 3 (oder mehr) Artikel hinzufüge, die jeweils 1 cm groß sind, wird keine Gebühr hinzugefügt …

    – KD_1983

    25. Februar 2019 um 19:49 Uhr


  • Oder wirklich, die Aktion funktioniert genau so, wie sie sollte. Genau wie die Aktion sagt. Ich bin derjenige, der unklar ist. Es tut uns leid. Ich benötige eine Berechnung der Gesamtwagenhöhe, kann das in der Aktion leicht geändert werden? @LoicTheAztec

    – KD_1983

    25. Februar 2019 um 19:59 Uhr


  • @KD_1983 Ich habe einen Versionscode hinzugefügt, der für die Gesamthöhe von Einkaufswagenartikeln funktioniert…

    – LoicTheAztec

    25. Februar 2019 um 20:10 Uhr

  • @LoicTheAztec Hallo! In meinem Shop ist ein zusätzliches Problem bezüglich einer neuen Gebühr für die Gesamtbreite aufgetreten. Ich habe versucht, mit dem Code herumzuspielen, den ich von Ihnen bekommen habe, aber ich habe ihn einfach kaputt gemacht, ohne zu wissen, was ich tue. Ich möchte Ihrem Code auch eine Gebühr für die Gesamthöhe und/oder -breite von Einkaufswagenartikeln hinzufügen. dh wenn der Wagen breiter als 25 cm ist, fällt eine Gebühr an, unabhängig davon, ob die Höhe mehr als 3 cm beträgt und umgekehrt. Ich möchte, dass sie zusammenarbeiten, aber dennoch unabhängig voneinander sind, nicht stapeln. Erstelle ich eine neue Frage mit Ihrem Code oder ist das eine Urheberrechtsverletzung? Danke!

    – KD_1983

    11. September 2019 um 17:52 Uhr

1004240cookie-checkFügen Sie eine Gebühr basierend auf der Höhe der Einkaufswagenartikel in Woocommerce hinzu

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

Privacy policy