Мне нужно изменить вес товара после добавления его в корзину.Вес зависит от атрибута продукта "Quantite-Avec-Fenetre".
На основе Изменение веса товаров в корзине для обновления стоимости доставки в Woocommerce , я пытаюсь использовать следующую функцию в файле functions.php моей темы:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_weight', 10, 1);
function add_custom_weight( $cart_object ) {
foreach ( $cart_object->get_cart() as $cart_item ) {
//very simplified example - every item in cart will be 100 kg
$attr = $cart_item['data']->get_attributes();
if ($cart_item['data']->get_SKU() == "PSP229AFSF") {
$qtySF = $attr["pa_quantite-sans-fenetre"];
$qtyAF = $attr["pa_quantite-avec-fenetre"];
var_dump($attr);
//echo $qtyAF;
//echo $qtySF;
//echo "oll";
}
//echo $attr["pa_impressiont"];
//$cart_item['data']->set_weight( 0.001 );
}
// Testing: cart weight output
}
Эхо и вещи, которые выглядят странно, просто для теста.Таким образом, это показывает с var_dump все атрибуты каждого продукта моей корзины (у которых есть SKU PSP229AFSF).
Проблема в том, что я устанавливаю атрибут, добавляю в корзину, в корзине я атрибут с хорошим значением, но он var_dump возвращает мне это:
array(7) {
["pa_impression"]=> string(15) "sans-impression"
["pa_impressionrecto"]=> string(11) "1couleurpms"
["pa_impressionverso"]=> string(12) "sansimpverso"
["pa_fichierimpr"]=> string(12) "designertool" ["pa_bat"]=> string(3)
"non" ["pa_quantite-avec-fenetre"]=> string(0) ""
["pa_quantite-sans-fenetre"]=> string(0) "" }
Как видите, атрибуты "pa_quantite-avec-fenetre" и "pa_quantite-sans-fenetre" пусты.
Это то, что показывает моя корзина (скриншот корзины):

Таким образом, атрибут хорошо установлен в корзине, нокажется, он недоступен в $cart_item
.
Я пробовал без плагинов, которые могут повлиять на атрибут, тот же эффект, есть идеи, откуда это взялось?