我正在使用Woocommerce进行项目,我希望人们能够订购带小数值的产品。
现在我用这段代码很容易解决这个问题:
add_filter('woocommerce_quantity_input_min', 'min_decimal');
function min_decimal($val) {
return 0.5;
}
add_filter('woocommerce_quantity_input_step', 'nsk_allow_decimal');
function nsk_allow_decimal($val) {
return 0.5;
}
remove_filter('woocommerce_stock_amount', 'intval');
add_filter('woocommerce_stock_amount', 'floatval');
但是由于某种原因,网站上的HTML会使用逗号输出值而不是像这样的句点:
<input id="quantity_5a66016934e7b" class="input-text qty text" step="0,5" min="0,5" max="" name="quantity" value="1" title="Aantal" size="4" pattern="" inputmode="" type="number">
这显然不起作用,因为它使用逗号而不是句点。但是我不知道是什么造成了这个。我已经将我在woocommerce中的全球分配器设置为一个时期,认为这是问题,但事实并非如此。
知道可能导致此问题的原因是什么?
答案 0 :(得分:0)
我已经测试了您的代码,即使字段显示的是昏迷而不是句号,它也能正常工作。 查看源代码时,字段中的值设置为句点,但显示屏会显示逗号。
您可以点击&#34;运行代码段&#34; 按钮,然后您会看到:
<div class="quantity">
<label class="screen-reader-text" for="quantity_5a660e741bc2f">Quantity</label>
<input type="number" id="quantity_5a660e741bc2f" class="input-text qty text" step="0.5" min="0.5" max="506" name="quantity" value="0.5" title="Qty" size="4" pattern="[0-9.]*" inputmode="numeric">
</div>
&#13;
您可以看到,字段值为
0.5
,但显示为 {{1 }} ...
只是这个html50,5
字段的正常行为,所以这与WooCommerce无关。
在this related documentation about <input type="number">
&#34; 允许小数值&#34;部分,同样的事情发生。源中的值带有句点,但显示为逗号
在woocommerce中,您还可以控制 <input type="number">
唯一过滤器钩子中的所有内容:
woocommerce_quantity_input_args
你还需要(如你的代码中所示):
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 20, 2 );
function custom_quantity_input_args( $args, $product ) {
$args['input_value'] = 0.5; // Default starting value (Optional)
$args['min_value'] = 0.5;
$args['step'] = 0.5;
$args['pattern'] = '[0-9.]*';
$args['inputmode'] = 'numeric';
return $args;
}
代码放在活动子主题(或活动主题)的function.php文件中。
经过测试和工作。