Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Woocommerce 在商业中如何根据装运类别包装产品?_Woocommerce - Fatal编程技术网

Woocommerce 在商业中如何根据装运类别包装产品?

Woocommerce 在商业中如何根据装运类别包装产品?,woocommerce,Woocommerce,我正在寻找一个解决方案,如何包装的产品在不同的包装基于航运类。有什么功能挂钩吗 让我们举例说明: 我有三种运输类别:可选、快速和标准 客户将订购10倍烈酒(装运类别:可选)、2份奶酪(装运类别:快递)和10千克橄榄(装运类别:标准) 事实上,我需要包装。1.奶酪+(可能是烈酒)快递2。橄榄+标准包装(可能是烈性酒) 我找不到任何解决方案来解决这个问题:单独计算运费价格,并让客户选择可选类别添加到Standard或Express。 任何帮助或提示,可以帮助我解决它将不胜感激 更新: 我使用了下面的

我正在寻找一个解决方案,如何包装的产品在不同的包装基于航运类。有什么功能挂钩吗

让我们举例说明:

我有三种运输类别:可选快速标准

客户将订购10倍烈酒(装运类别:可选)、2份奶酪(装运类别:快递)和10千克橄榄(装运类别:标准) 事实上,我需要包装。1.奶酪+(可能是烈酒)快递2。橄榄+标准包装(可能是烈性酒)

我找不到任何解决方案来解决这个问题:单独计算运费价格,并让客户选择可选类别添加到Standard或Express。 任何帮助或提示,可以帮助我解决它将不胜感激

更新:

我使用了下面的代码,但是可选的shipping类仍然存在问题。我如何添加选项,以便用户选择带有可选装运类别的产品添加到快递包裹标准包裹

add_filter( 'woocommerce_cart_shipping_packages', 'wf_split_cart_by_shipping_class_group' );
function wf_split_cart_by_shipping_class_group($packages){
    //Reset packages
    $packages               = array();
    
    //Init splitted package
    $splitted_packages      =   array();
    
    // Group of shipping class ids
    $class_groups =  array(
        'group1'    => array('plane'),
        'group2'    =>  array('truck'),
        // 'group3' =>  array(11,15,17),        
    );  
    
    foreach ( WC()->cart->get_cart() as $item_key => $item ) {
        if ( $item['data']->needs_shipping() ) {
            
            $belongs_to_class_group =   'none';
            
            $item_ship_class_id =   $item['data']->get_shipping_class();
            
            if($item_ship_class_id){
                
                foreach($class_groups as $class_group_key   =>  $class_group){
                    if(in_array($item_ship_class_id, $class_group)){                
                        $belongs_to_class_group = $class_group_key;
                        continue;
                    }
                }
                
            }           
            
            $splitted_packages[$belongs_to_class_group][$item_key]  =   $item;
        }
    }
    
    // Add grouped items as packages 
    if(is_array($splitted_packages)){
        
        foreach($splitted_packages as $splitted_package_items){
            $packages[] = array(
                'contents'        => $splitted_package_items,
                'contents_cost'   => array_sum( wp_list_pluck( $splitted_package_items, 'line_total' ) ),
                'applied_coupons' => WC()->cart->get_applied_coupons(),
                'user'            => array(
                     'ID' => get_current_user_id(),
                ),
                'destination'    => array(
                    'country'    => WC()->customer->get_shipping_country(),
                    'state'      => WC()->customer->get_shipping_state(),
                    'postcode'   => WC()->customer->get_shipping_postcode(),
                    'city'       => WC()->customer->get_shipping_city(),
                    'address'    => WC()->customer->get_shipping_address(),
                    'address_2'  => WC()->customer->get_shipping_address_2()
                )
            );
        }
    }
    return $packages;
}