2016-11-11 2 views
3

Ich muss das Gesamtgewicht der Bestellung in Woocommerce Website ändern.Änderung gesamt woocomerce Bestellgewicht

Zum Beispiel: Ich habe ein 3 Produkt in einem Warenkorb: 1 - 30g; 2 - 35; 3 - 35 g; total = 30 + 35 + 35 = 100g, aber ich möchte das Gewicht der Packung zum Gesamtgewicht hinzufügen (30% vom Gesamtgewicht).

Beispiel: ((30 + 35 + 35) * 0,3) + (30 + 35 + 35) = 130 g

ich es berechnen kann, aber wie Gesamtgewicht von 100 g auf 130 g geändert werden.

Um das Gesamtgewicht zu erhalten, benutze ich get_cart_contents_weight(), aber ich weiß nicht, wie man einen neuen Wert setzt.

Antwort

2

Haken in die richtige Filterwirkung

Lassen Sie uns auf die Funktion einen Blick get_cart_contents_weight():

public function get_cart_contents_weight() { 
    $weight = 0; 

    foreach ($this->get_cart() as $cart_item_key => $values) { 
     $weight += $values['data']->get_weight() * $values['quantity']; 
    } 

    return apply_filters('woocommerce_cart_contents_weight', $weight); 
} 

Es ist ein Filter Haken wir verwenden können: woocommerce_cart_contents_weight

So Wir können diesem Filter eine Funktion hinzufügen:

add_filter('woocommerce_cart_contents_weight', 'add_package_weight_to_cart_contents_weight'); 

function add_package_weight_to_cart_contents_weight($weight) {   
    $weight = $weight * 1.3; // add 30%  
    return $weight;  
} 

Um das Paketgewicht zu jedem Produkt separat hinzufügen, können Sie dies versuchen:

add_filter('woocommerce_product_get_weight', 'add_package_to_product_get_weight'); 

function add_package_to_product_get_weight($weight) { 
    return $weight * 1.3; 
} 

Aber nicht beide Lösungen gemeinsam nutzen.

+0

es funktioniert, aber wenn ich Versand berechnen erhalte ich alten Wert von Gewicht – dendomenko

+0

Ich habe meine Antwort aktualisiert. Probieren Sie die zweite Lösung. –

0

Es funktioniert an meinem Ende. Aktualisieren Sie das Gesamtgewicht auf den neuen Gewichtswert.

add_action('woocommerce_cart_collaterals', 'myprefix_cart_extra_info'); 
function myprefix_cart_extra_info() { 
    global $woocommerce; 
    echo '<div class="cart-extra-info">'; 
    echo '<p class="total-weight">' . __('Total Weight:', 'woocommerce'); 
    echo ($woocommerce->cart->cart_contents_weight*0.3)+$woocommerce->cart->cart_contents_weight; 
    echo '</p>'; 
    echo '</div>'; 
}