在 WooCommerce 中根据重量更改简单产品的输入数量步骤值
P粉351138462
2023-09-04 21:55:45
[PHP讨论组]
<p>我希望数量选择器值根据我们在“运输”>“产品重量”中为简单产品设置的重量进行更改。
如下图所示,当我们将产品的重量设置为0.5公斤时,产品数量选择器从0.5开始,如果我们设置为1公斤,则从1开始。最后当我们将重量设置为每个数字时,数量选择器应该根据我们定义的权重数字启动。
我修改了代码,但它不适用于小于 1 的值。</p>
<pre class="brush:php;toolbar:false;">/*Quantity Selector Based On Simple*/
function custom_quantity_selector_min_value( $min, $product ) {
$weight = $product->get_weight();
if ( $weight > 0 ) {
$min = $weight;
}
return $min;
}
add_filter( 'woocommerce_quantity_input_min', 'custom_quantity_selector_min_value', 10, 2 );
//Modify the quantity selector step value.
function custom_quantity_selector_step( $step, $product ) {
$weight = $product->get_weight();
if ( $weight > 0 ) {
$step = $weight;
}
return $step;
}
add_filter( 'woocommerce_quantity_input_step', 'custom_quantity_selector_step', 10, 2 );
//Update the quantity selector value dynamically.
function custom_quantity_selector_value( $input_value, $product ) {
$weight = $product->get_weight();
if ( $weight > 0 ) {
$input_value = $weight;
}
return $input_value;
}
add_filter( 'woocommerce_quantity_input_value', 'custom_quantity_selector_value', 10, 2 );</pre></p>
要使用的正确代码替换(更新):
它将按预期顺利工作:
add_filter( 'woocommerce_quantity_input_args', 'cart_variation_quantity_input_args', 10, 2 ); function cart_variation_quantity_input_args( $args, $product ){ $product_weight = $product->get_weight(); if( $product_weight > 0 ) { if ( ! is_cart()) { $args['input_value'] = $product_weight; } $args['step'] = $args['min_value'] = $product_weight; } return $args; }请确保您也添加了(用于库存管理):
remove_filter('woocommerce_stock_amount', 'intval'); add_filter('woocommerce_stock_amount', 'floatval');代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。
加载包含
0.5重量的产品的页面时:在产品上设置正确的数量输入,并以
0.5的步长增加(正常步长也是 1)。在购物车页面上,一切都按预期进行,步长为
0.5(正常步长也是 1)。相关(针对变体):根据 WooCommerce 中选定的变化权重更改输入数量步骤值