【问题标题】:Edit a cart item attribute value for Woocommerce product variations编辑 Woocommerce 产品变体的购物车项目属性值
【发布时间】:2019-05-25 20:44:54
【问题描述】:

我的购物车商品有 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();
}

【问题讨论】:

  • 是产品变体(来自可变产品)还是简单产品?
  • 是的,来自可变产品
  • 我设法用这个编辑了数量:$woocommerce->cart->cart_contents[$key]['quantity'] = $qty;但不知道如何为 size 属性做到这一点

标签: php wordpress woocommerce cart variations


【解决方案1】:

数量第一 $woocommerce-&gt;cart-&gt;cart_contents[$key]['quantity'] = $qty; 已经完全过时了……而是这样使用WC_Cart method set_quantity()

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

更改购物车中的产品属性

购物车中的可变产品和产品变体

可变产品不可编辑,因为只能将其中的产品变体添加到购物车......

编辑产品变体中设置的变体属性的唯一方法是在woocommerce_add_cart_item过滤钩子中使用以下钩子函数。

要定位的产品属性 key slug 始终以 attribute_pa_ 开头。
要替换的术语必须是 slug(不是名称)。

这里对于产品属性“Size”,我们将其更改为“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 文件中。经过测试并且可以工作。

对于其他产品来说,事情要复杂得多,而且真的没用。

【讨论】:

  • 感谢洛伊克。这就是我如何访问 size 属性: $woocommerce->cart->cart_contents[$key]['data']->get_data()['attributes']['size']
  • 有没有办法像这样在一行中设置它?我试过你的代码,没有用
  • 我希望这会起作用:WC()->cart->get_cart_item($key)->set_attributes(array('size' => 'XL'));
  • @HakimDahune 你不会用你的方式做任何事......
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 2017-05-09
相关资源
最近更新 更多