我已经为特定产品创建了功能。客户可以选择对象的颜色。如果客户选择“红色”,则在单个产品页面上输入的数量将更改为10、20、30、40、50 ...
对于同一产品,如果客户选择“绿色”,则选择更改为5,10,15,20,25 ...
在测试中,我在购物车中添加了红色选项,在绿色中添加了
。现在我进入购物车页面,我在购物车中有2件商品...好!
但是我的数量我不知道更改基于颜色的自定义选择的数量输入字段。 我想将红色分别显示为10、20、30、40、50 ...,绿色为5、10、15、20、25 ...
我想使用我的自定义$ cart_item_data ['color']作为更改数量,因为产品ID与$ cart_item_data更改相同。
我已经尝试过了
function custom_quantity_input_default( $args, $product ) {
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$color = $values['color'];
if ($color == 'red'){
$qte = '5';
}
}
$args['step'] = $qte;
return $args;
}
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_default', 10, 2 );
但是不起作用,因为args返回两个乘积中的最后一个数字
答案 0 :(得分:0)
在活动主题的functions.php中添加以下代码段-
// for single page quantity changes
function change_quantity_product_for_variation(){
?>
<script type="text/javascript">
( function( $ ) {
$( document.body ).on( 'show_variation', function(event, variation) {
var $qty = $('.single_variation_wrap').find( '.quantity' ),
selected_color = variation.attributes.attribute_pa_color;
// Hide or show qty input
if ( variation.is_sold_individually === 'yes' ) {
$qty.find( 'input.qty' ).val( '1' ).attr( 'min', '1' ).attr( 'max', '' );
$qty.hide();
} else {
if( selected_color == 'red' ){
$qty.find( 'input.qty' ).attr( 'min', '10' ).attr( 'step', '10' );
$qty.show();
}else if( selected_color == 'green' ){
$qty.find( 'input.qty' ).attr( 'min', '5' ).attr( 'step', '5' );
$qty.show();
}
}
} );
} )( jQuery );
</script>
<?php
}
add_action( 'wp_footer', 'change_quantity_product_for_variation' );
// for cart quantity changes
function change_cart_item_quantity_input_field( $product_quantity, $cart_item_key, $cart_item ) {
$product = $cart_item['data'];
if( $cart_item['variation_id'] == 0 ) return $product_quantity;
if( !$cart_item['variation'] ) return $product_quantity;
if ( ! $product->is_sold_individually() ) {
if( $cart_item['variation']['attribute_pa_color'] == 'red' ){
$product_quantity = woocommerce_quantity_input(
array(
'input_name' => "cart[{$cart_item_key}][qty]",
'input_value' => $cart_item['quantity'],
'max_value' => $product->get_max_purchase_quantity(),
'min_value' => '10',
'step' => '10',
'product_name' => $product->get_name(),
),
$product,
false
);
}elseif( $cart_item['variation']['attribute_pa_color'] == 'green' ){
$product_quantity = woocommerce_quantity_input(
array(
'input_name' => "cart[{$cart_item_key}][qty]",
'input_value' => $cart_item['quantity'],
'max_value' => $product->get_max_purchase_quantity(),
'min_value' => '5',
'step' => '5',
'product_name' => $product->get_name(),
),
$product,
false
);
}
}
return $product_quantity;
}
add_filter( 'woocommerce_cart_item_quantity', 'change_cart_item_quantity_input_field', 99, 3 );