遗憾的是,数量输入不支持这一点。数量输入在以下模板中呈现:global/quantity-input.php. 您可以在模板中看到,它使用的是“number”类型的html输入元素,它不支持自定义步骤。在这种情况下使用过滤器是行不通的。
如果您确信您总是希望在数量输入中使用自定义步骤,那么您可以覆盖主题/插件中的模板,并对html输入进行自定义编码。
如果您想更专业一些,可以使用wc_get_template
筛选以仅在数量输入参数中存在某个参数时显示自定义步骤输入。
The code below isn\'t tested, but hopefully it will point you in the right direction :)
add_filter( \'woocommerce_quantity_input_args\', \'posters_woocommerce_quantity_input_args\', 10, 2 );
function posters_woocommerce_quantity_input_args( $args, $product ) {
$args[\'input_value\'] = 1; // Starting value
$args[\'custom_steps\'] = [100, 500, 1000, 2500, 10000, 20000]
return $args;
}
add_filter(\'wc_get_template\', \'posters_woocommerce_quantity_input_template\', 10, 5);
/**
* Filter to override the template for quantity_input.php
*/
function posters_woocommerce_quantity_input_template($located, $template_name, $args, $template_path, $default_path) {
if ($template_name === \'global/quantity_input.php\' && isset($args[\'custom_steps\']) {
// Override the template because custom steps are present.
$located = \'global/custom_quantity_input.php\';
}
return $located;
}
然后在主题中创建一个新模板
woocommerce/global/custom_quantity_input.php
通过复制
global/custom_quantity_input.php
模板并对其进行修改以创建html
<select>
使用基于您指定的自定义步骤的选项。
// ...
<div class="quantity">
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php esc_html_e( \'Quantity\', \'woocommerce\' ); ?></label>
<select
id="<?php echo esc_attr( $input_id ); ?>"
name="<?php echo esc_attr( $input_name ); ?>"
value="<?php echo esc_attr( $input_value ); ?>"
title="<?php echo esc_attr_x( \'Qty\', \'Product quantity input tooltip\', \'woocommerce\' ); ?>"
aria-labelledby="<?php echo esc_attr( $labelledby ); ?>">
<?php
// Render each step as an option in a select drop down.
foreach ($args[\'custom_step\'] as $step) {
?>
<option value="<?php echo esc_attr( $step ); ?>"><?php esc_html_e( $step ); ?></option>
<?php } // end foreach ?>
</select>
</div>
// ...
这只是一个想法。我很确定原则上应该行得通。希望有帮助。