Einzahlung basierend auf einem Prozentsatz des gesamten Warenkorbbetrags

Lesezeit: 3 Minuten

Einzahlung basierend auf einem Prozentsatz des gesamten Warenkorbbetrags
Stewsgarage.com

Ich habe diesen Code aus einem anderen Post genommen und nach meinem Verständnis versucht dieser Code im Grunde, den Warenkorbpreis zu zwingen, sich auf einen festen Betrag von 40 $ zu ändern und ihn als Buchungsgebühr zu berechnen.

Was ich tun möchte, ist, dass der Warenkorbbetrag 20% ​​der Summe beträgt, die sich aus der Addition aller Produkte im Warenkorb ergeben würde. Meine Seite ist für Reservierungenalso will ich nur eine Anzahlung zu verlangen und lassen Sie sie dann bezahlen, wenn sie ihre Reservierung nutzen.

Hier ist der Code aus diesem Beitrag: Woocommerce Cart Deposit

add_action( 'woocommerce_cart_calculate_fees', 'booking_fee' );
function booking_fee() {
    global $woocommerce;

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $bookingfee_array = array( '2434' );

    $fixed = 40.00;

    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {

        if( in_array( $values['product_id'], $bookingfee_array ) ) {
            $surcharge = $fixed;
            $woocommerce->cart->add_fee( 'Broneeringutasu', $surcharge, true, '' );
        }

    }

}

Und so würde ich es ändern:

add_action( 'woocommerce_cart_calculate_fees', 'booking_fee' );
function booking_fee() {
    global $woocommerce;

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $bookingfee_array = array( '2434' );

    $percent = .20;

    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {

        if( in_array( $values['product_id'], $bookingfee_array ) ) {
            $surcharge = $percent;
            $woocommerce->cart->add_fee( 'Booking Fee', $surcharge, true, '' );
        }

    }

}

Aber das funktioniert nicht wie erwartet.

Irgendwelche Hilfe dazu?

Danke

Einzahlung basierend auf einem Prozentsatz des gesamten Warenkorbbetrags
LoicTheAztec

Ihr Code wird nicht wirklich das tun, was Sie erwarten, da Sie eine Gebühr von hinzufügen o.2 zum Gesamtbetrag des Einkaufswagens. Also, wenn der Warenkorbbetrag ist 100wird die Gesamtsumme sein 100.2

Was Sie stattdessen tun möchten, ist, 80 % des gesamten Warenkorbbetrags zu entfernen, um einen Warenkorbbetrag von 20 % zu erhalten. Dies ist mit einer negativen Gebühr von 80 % vom Gesamtbetrag des Warenkorbs möglich. Wenn Sie keine zielgerichteten Produkt-IDs wie in Ihrem ursprünglichen Code festlegen müssen, verwenden Sie die zweite Funktion unten.

Hier ist die erste Funktion, die 80 % des gesamten Warenkorbbetrags entfernt, wenn ein Artikel im Warenkorb mit den in der Funktion festgelegten Zielprodukt-IDs übereinstimmt:

add_action( 'woocommerce_cart_calculate_fees', 'booking_deposit_calculation' );
function booking_deposit_calculation( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    ## Set HERE your targeted products IDs
    $target_product_ids = array( 2434 );

    ## Set HERE your negative percentage (to remove an amount from cart total)
    $percent = -.80; // 80% off (negative)

    $matching = false;

    // Iterating through each cart items
    foreach ( $cart_object->get_cart() as $item_values )
    {
        if( in_array( $item_values['product_id'], $target_product_ids ) )
        { // If a cart item match with a targeted product ID

            // Get cart subtotal excluding taxes
            $cart_subtotal = $cart_object->subtotal_ex_tax;
            // or for subtotal including taxes use instead:
            // $cart_subtotal = $cart_object->subtotal;

            ## ## CALCULATION ## ##
            $calculated_amount = $cart_subtotal * $percent;

            // Adding a negative fee to cart amount (Including taxes)
            $cart_object->add_fee( __('Deposit calculation', 'woocommerce'), $calculated_amount, true );

            break; // We stop the loop
        }
    }
}

Code geht in die function.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.


Möglicherweise müssen Sie jedoch nicht über einige zielgerichtete Produkte verfügen, wie im ursprünglichen Code.

Wenn dies der Fall ist, vereinfachen Sie den Code:

add_action( 'woocommerce_cart_calculate_fees', 'booking_deposit_calculation' );
function booking_deposit_calculation( $cart_object ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    ## Set HERE your negative percentage (to remove an amount from cart total)
    $percent = -.80; // 80% off (negative)

    // Get cart subtotal excluding taxes
    $cart_subtotal = $cart_object->subtotal_ex_tax;
    // or for subtotal including taxes use instead:
    // $cart_subtotal = $cart_object->subtotal;

    ## ## CALCULATION ## ##
    $calculated_amount = $cart_subtotal * $percent;

    // Adding a negative fee to cart amount (Including taxes)
    $cart_object->add_fee( __('Deposit calculation', 'woocommerce'), $calculated_amount, true );

}

Code geht in die function.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.

Beide Funktionen sind getestet und funktionieren

  • Das war genau das, wonach ich gesucht habe! Danke sehr.

    – Stewsgarage.com

    6. März 2017 um 4:49 Uhr

  • @Stewsgarage.com Willkommen, das war etwas sehr einfaches für mich … Es gibt auch einige kostenlose Plugins: wordpress.org/plugins/search.php?q=woocommerce+deposit

    – LoicTheAztec

    6. März 2017 um 5:11 Uhr


1004230cookie-checkEinzahlung basierend auf einem Prozentsatz des gesamten Warenkorbbetrags

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

Privacy policy