当最小值等于 WooCommerce 中的最大值时,在购物车页面上将数量输入显示为只读
Show quantity input as readonly on cart page when min value is equal to max value in WooCommerce
应用此过滤器且最小值和最大值 = 1 将使数量输入字段在购物车页面上消失:
add_filter( 'woocommerce_quantity_input_args', 'custom_cart_qty_range', 10, 2 );
function custom_cart_qty_range( $args, $product ) {
$args['min_value'] = 1;
$args['max_value'] = 1;
return $args;
}
我完全不明白这个"feature",因为客户根本看不到商品数量。我想输入 readonly
并改为应用自定义 CSS。我已经准备好 CSS,但我需要的是阻止 WooCommerce 在 min = max.
时对数量输入字段进行例外处理
在产品页面上,当 min = max(显示的过滤器对产品页面数量不起作用)输入字段仍然可见时,我想要的结果是什么。
如果您想阻止 WooCommerce 的这种行为,您将需要通过您的活动主题覆盖 global/quantity-input.php
模板文件。
首先阅读 "How to override woocommerce templates via your active theme",其中解释了如何将模板文件从 WooCommerce 插件复制到您的主题文件夹以进行一些所需的更改。
要复制的相关模板文件为: global/quantity-input.php
将其复制到 "global" 子文件夹上的 "woocommerce" 文件夹中后,打开/编辑 quantity-input.php
文件并更改以下代码块 (从行 21
到 25
):
?>
<div class="quantity hidden">
<input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" />
</div>
<?php
通过以下方式:
?>
<div class="quantity">
<input type="text" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" readonly="readonly" />
</div>
<?php
保存,大功告成。
现在,当 min_value
等于 max_value
时,该字段将显示为 只读 并具有正确的值。
现在,如果您只需要在购物车页面中使用它,则必须进行以下更改:
if ( is_cart() ) {
?>
<div class="quantity">
<input type="text" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" readonly="readonly" />
</div>
<?php
} else {
?>
<div class="quantity hidden">
<input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" />
</div>
<?php
}
应用此过滤器且最小值和最大值 = 1 将使数量输入字段在购物车页面上消失:
add_filter( 'woocommerce_quantity_input_args', 'custom_cart_qty_range', 10, 2 );
function custom_cart_qty_range( $args, $product ) {
$args['min_value'] = 1;
$args['max_value'] = 1;
return $args;
}
我完全不明白这个"feature",因为客户根本看不到商品数量。我想输入 readonly
并改为应用自定义 CSS。我已经准备好 CSS,但我需要的是阻止 WooCommerce 在 min = max.
在产品页面上,当 min = max(显示的过滤器对产品页面数量不起作用)输入字段仍然可见时,我想要的结果是什么。
如果您想阻止 WooCommerce 的这种行为,您将需要通过您的活动主题覆盖 global/quantity-input.php
模板文件。
首先阅读 "How to override woocommerce templates via your active theme",其中解释了如何将模板文件从 WooCommerce 插件复制到您的主题文件夹以进行一些所需的更改。
要复制的相关模板文件为: global/quantity-input.php
将其复制到 "global" 子文件夹上的 "woocommerce" 文件夹中后,打开/编辑 quantity-input.php
文件并更改以下代码块 (从行 21
到 25
):
?>
<div class="quantity hidden">
<input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" />
</div>
<?php
通过以下方式:
?>
<div class="quantity">
<input type="text" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" readonly="readonly" />
</div>
<?php
保存,大功告成。
现在,当 min_value
等于 max_value
时,该字段将显示为 只读 并具有正确的值。
现在,如果您只需要在购物车页面中使用它,则必须进行以下更改:
if ( is_cart() ) {
?>
<div class="quantity">
<input type="text" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" readonly="readonly" />
</div>
<?php
} else {
?>
<div class="quantity hidden">
<input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" />
</div>
<?php
}