0

使用 min 和 max = 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;
}

我完全不理解这个“功能”,因为客户根本看不到商品数量。我想输入readonly并应用自定义 CSS。我已经准备好这个 CSS,但我需要的是阻止 WooCommerce 在 min = max 时对数量输入字段进行例外处理。

在产品页面上,当 min = max(呈现的过滤器不适用于产品页面数量)输入字段仍然可见时,我想要的结果是什么。

4

1 回答 1

2

如果您想阻止 WooCommerce 的这种行为,您将需要global/quantity-input.php通过您的活动主题覆盖模板文件。

首先阅读“如何通过您的活动主题覆盖 woocommerce 模板”,其中解释了如何将模板文件从 WooCommerce 插件复制到您的主题文件夹以进行一些所需的更改。

要复制的相关模板文件是: global/quantity-input.php

将其复制到“global”子文件夹上的“woocommerce”文件夹中的主题内后,打开/编辑quantity-input.php文件并更改以下代码块(从行2125

?>
<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
}
于 2019-05-25T16:00:01.577 回答