根据Woocommerce中特定产品属性值更改购物车项目价格

时间:2018-09-03 17:37:27

标签: php woocommerce product custom-taxonomy price

我正在尝试使用以下功能更改购物车中的产品价格:

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10);
function add_custom_price( $cart_obj ) {
    foreach ( $cart_obj->get_cart() as $key => $value ) {
        $item_data = $value['data'];
        $price0 = $item_data->get_attributes('per_one_price');
        $price  = (int) $price0;
        $value['data']->set_price( $num_int );
    }
}

但是对于我设置为per_one_price属性的产品属性值的任何数字,我的购物车价格都为1。

1 个答案:

答案 0 :(得分:3)

  

更新-有2个小错误:

     
      
  • get_attributes()替换为get_attribute() (单数)
  •   
  • 'per_one_price'替换为'Per one price' (或'per-one-price',将空格替换为破折号
  •   

因此,请尝试以下操作:

add_action( 'woocommerce_before_calculate_totals', 'set_custom_item_price', 20, 1 );
function set_custom_item_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // Loop through cart items
    foreach ( $cart->get_cart() as $cart_item ) {
        // get attibute value
        $new_price = $cart_item['data']->get_attribute('per-one-price');

        if( ! empty( $new_price ) ){
            // Set the new price
            $cart_item['data']->set_price( $new_price );
        }
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试并可以正常工作。


创建“每一个价格” 产品属性:

enter image description here

产品价格设置视图:

enter image description here

在产品中设置的产品属性及其值:

enter image description here

使用此产品的购物车页面视图:

enter image description here