我想为所有产品相同的变量设置默认数量。第一个变体 1 个,第二个变体 2 个,第三个变体 3 个。 实际上 for 循环存在一些问题。 我会感谢可以提供帮助的人。 :)
add_filter( 'woocommerce_available_variation', 'custom_variation_min_max_qty', 10, 3 );
function custom_variation_min_max_qty( $data, $product, $variation ) {
// Your variable product ID
$variable_id = $product->get_id();
$qtym =0;
if( $product->get_id() == $variable_id ) {
// Set 1st variation ID
for ($i=1; $i++; ) {
if( $variation->get_id() == $i ){
$qty = $qtym +1; // Set the quantity
$qtym=$qty;
}
if ($i > 1000) {
break;
}
}
}
if( isset($qty) ) {
$data['min_qty'] = $qty;
$data['max_qty'] = $qty;
}
return $data;
}
add_action( 'woocommerce_after_single_variation', 'change_variation_input_quantity_script' );
function change_variation_input_quantity_script() {
global $product;
// Your variable product ID
$variable_id = $product->get_id();
if( $product->get_id() != $variable_id ) return;
// Output Javascript
?>
<!-- JS Thankyou Script -->
<script type="text/javascript">
jQuery(function($) {
var a = 'div.quantity > input.qty';
// On load
setTimeout(function(){
$(a).val($(a).prop('min'));
}, 300);
// On change / select a variation
$('.variations_form select').on( 'blur', function(){
if( $('input[name="variation_id"]').val() > 0 )
$(a).val($(a).prop('min'));
})
});
</script>
<?php
}
答案 0 :(得分:1)
为每个产品变体执行 woocommerce_available_variation
钩子。
它位于 get_available_variation()
方法中,而该方法又在 get_available_variations()
类的 WC_Product_Variable
方法中执行。
如果你想像这样设置产品的数量(最小和最大):
min_qty
=> 1max_qty
=> 1min_qty
=> 2max_qty
=> 2min_qty
=> 3max_qty
=> 3等等...
您可以使用以下功能:
// set custom quantities to product variations
add_filter( 'woocommerce_available_variation', 'custom_variation_min_max_qty', 10, 3 );
function custom_variation_min_max_qty( $data, $product, $variation ) {
// initializes the number (position) of the product variation
$i = 1;
// for each product variation
foreach ( $product->get_children() as $variation_id ) {
// if the id of the product variation is equal to the id of the current variation
if ( $variation_id == $variation->get_id() ) {
// sets the min and max values with the current position
$data['min_qty'] = $i;
$data['max_qty'] = $i;
}
$i++;
}
return $data;
}
代码已经过测试并且可以工作。将它添加到您的活动主题的functions.php。