Σα? παραθ?τω 2 βελτιωμ?νε? αντικαταστ?σει? σε 2 functions του κ?δικα σα? που πιθαν?ν να βρε?τε χρ?σιμα:
public function get_order_weight()
{
$chosen_methods = WC()->session->get('chosen_shipping_methods');
$weight = 0;
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$_product = $cart_item['data'];
if (is_numeric($_product->get_weight())) {
$weight += $_product->get_weight() * $cart_item['quantity'];
}
}
return $weight;
}
public function calculate_shipping($packages = array())
{
$settings = AcsPointsPlugin::getSettings();
$baseCost = $settings['baseCost'];
$baseCostKgLimit = $settings['baseCostKgLimit'] ?? 0;
$costPerKg = $settings['costPerKg'] ?? 0;
$freeShippingLimit = $settings['freeShippingUpperLimit'];
$optionCost = 0;
$orderTotalCost = 0;
$weightTotal = 0;
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$_product = $cart_item['data'];
$qty = $cart_item['quantity'] ?? 1;
$tempWeight = (float) $_product->get_weight(); // Changed to float for decimal weights
$weightTotal += $qty * $tempWeight;
$orderTotalCost += $qty * $_product->get_price();
}
if ($freeShippingLimit != '' && $orderTotalCost < $freeShippingLimit) {
$optionCost = $baseCost;
if ($weightTotal > $baseCostKgLimit) {
$optionCost += $costPerKg * ($weightTotal - $baseCostKgLimit);
}
}
Στον 1ο ενημερωμ?νο κ?δικα, η συν?ρτηση επαναλαμβ?νεται π?νω απ? τα ε?δη καλαθιο? χρησιμοποι?ντα? WC()->cart->get_cart() και υπολογ?ζει το β?ρο? με β?ση το β?ρο? κ?θε προ??ντο? πολλαπλασιασμ?νο με την ποσ?τητα του. Η μ?θοδο? get_cart_contents_weight() που παρ?χεται απ? το WooCommerce υπολογ?ζει το συνολικ? β?ρο? των περιεχομ?νων του καλαθιο?, γεγον?? που καθιστ? τον κ?δικα πιο συνοπτικ? και εξαλε?φει την αν?γκη αν?κτηση? πακ?των απ? την κατηγορ?α αποστολ??.
Στον 2ο ενημερωμ?νο κ?δικα, η συν?ρτηση χρησιμοποιε? WC()->cart->get_cart() για να επαναλ?βει τα ε?δη του καλαθιο? και υπολογ?ζει το συνολικ? β?ρο? και το συνολικ? κ?στο? παραγγελ?α? με β?ση την ποσ?τητα και το β?ρο? κ?θε προ??ντο?. Πολλαπλασι?ζοντα? το $tempWeight με το $qty στη γραμμ? $weightTotal += $qty * $tempWeight;, ο υπολογισμ?? λαμβ?νει σωστ? υπ?ψη την ποσ?τητα κ?θε προ??ντο? και συσσωρε?ει το συνολικ? β?ρο? αν?λογα. Η αν?γκη πρ?σβαση? στα $packages[‘contents’] εξαλε?φεται.
?σοι αντιμ?τωπ?ζουν προβλ?ματα υπολογισμο? (δοκιμασμ?να με την ?κδοση 6.0.5 ) προτ?ινω να προχωρ?σουν σε αντικατ?σταση με των ?νω Functions.
Ευελπιστ? οι προτ?σει? μου να φανο?ν χρ?σιμε?.
Σα? ευχαριστ? για την αν?γνωση
-
This reply was modified 1 year, 5 months ago by headplus.
-
This reply was modified 1 year, 5 months ago by headplus.