Редактировать значение атрибута корзины для вариантов продукта Woocommerce - PullRequest
0 голосов
/ 28 декабря 2018

Моя корзина имеет 1 атрибут, который является "размером", как я могу это изменить?

.......
    ["attributes"]=>
      array(1) {
        ["size"]=>
        string(1) "M"
      }
.......

Вот функция ajax, с которой я редактирую товары:

add_action('wp_ajax_updateCartItem', 'updateCartItem');
add_action('wp_ajax_nopriv_updateCartItem', 'updateCartItem');
function updateCartItem() {
    global $woocommerce;

    $key = $_POST['cart_item_key'];
    $pid = $_POST['product_id'];
    $qty = $_POST['quantity'];
    $sz = $_POST['variations_size'];

    WC()->cart->set_quantity( $key, $qty );

    $data = array("success"=>true,"data"=>array("cart_item_key"=>"$key","cart_item_subtotal"=>"<span class=\"woocommerce-Price-amount amount\"><span class=\"woocommerce-Price-currencySymbol\">$cs</span>&nbsp;$pc</span>","cart_total"=>"<span class=\"woocommerce-Price-amount amount\">&nbsp;".$woocommerce->cart->get_total()."</span>","cart_shipping"=>"Free","quantity"=>"$qty"));

    header('Content-Type: application/json charset=UTF-8');
    echo json_encode($data);
    die();
}

1 Ответ

0 голосов
/ 28 декабря 2018

Первый для количества $woocommerce->cart->cart_contents[$key]['quantity'] = $qty; полностью устарел ... Вместо этого используйте метод WC_Cart set_quantity() таким образом:

 WC()->cart->set_quantity( $cart_item_key, $qty );

Чтобы изменить атрибуты товара в корзине

Переменные товары и вариации товара в корзине

Переменные товары недоступны для редактирования, так как в корзину можно добавить только изменение товара из него…

Единственный способ отредактировать атрибут для вариации, установленной в вариации продукта, - это использовать следующую зацепленную функцию в woocommerce_add_cart_item ловушке фильтра.

Плагин ключа атрибута продукта для цели всегда начинается сattribute_pa_.
Заменяемый термин должен быть слагом (а не именем).

Здесь для атрибута продукта "Размер" мы меняем его на "XXL", например:

add_filter( 'woocommerce_add_cart_item', 'filter_add_cart_item', 10, 2 );
function filter_add_cart_item( $cart_item_data, $cart_item_key ) {
    if ( isset($cart_item_data['variation']['attribute_pa_size']) ) {
        // Changing the term slug for product attribute "Size" from "m" to "XXL"
        $cart_item_data['variation']['attribute_pa_size'] = 'xxl';
    }
    return $cart_item_data;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Для других продуктов это нечто гораздо более сложное и действительно бесполезное.

...