Woocommerce 数量按钮对于单个库存单位消失
Woocommerce quantity button disappear for a single unit in stock
当我们的库存中只有一个单位的产品时,数量按钮不会出现在添加到购物车旁边。如何让它出现?
在您的 function.php 文件中使用此代码:
<?php
/**
* Code should be placed in your theme functions.php file.
*/
add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 );
function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
$html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
$html .= woocommerce_quantity_input( array(), $product, false );
$html .= '<button type="submit" class="button alt">' . esc_html( $product->add_to_cart_text() ) . '</button>';
$html .= '</form>';
}
return $html;
}
已更新
这可以通过 woocommerce_quantity_input_args
过滤器挂钩中的以下自定义挂钩函数来完成,我在其中仅针对单个产品页面上库存数量为 1 的产品。
Explanations: If you look in woocommerce source code for quantity field, you will see that 'min_value'
need to be different than 'max_value'
to get the quantity field displayed.
所以有 2 个方法可以显示数量字段:
1) 将空值设置为 'max_value'
(这将允许在字段中设置任何值):
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 20, 2 );
function custom_quantity_input_args( $args, $product ) {
if( $product->get_stock_quantity() == 1 && is_product() ){
$args['max_value'] = '';
}
return $args;
}
代码进入您的活动子主题(活动主题)的 function.php 文件。
已测试并有效。
2) 将最小值设置为0
(但在这种情况下数量字段可以设置为零):
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 20, 2 );
function custom_quantity_input_args( $args, $product ) {
if( $product->get_stock_quantity() == 1 && is_product() ){
$args['min_value'] = 0;
}
return $args;
}
代码进入您的活动子主题(活动主题)的 function.php 文件。
已测试并有效。
3) 另一种方式:
You can enable back orders option for each product… that will always display the quantity field.
当我们的库存中只有一个单位的产品时,数量按钮不会出现在添加到购物车旁边。如何让它出现?
在您的 function.php 文件中使用此代码:
<?php
/**
* Code should be placed in your theme functions.php file.
*/
add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 );
function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
$html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
$html .= woocommerce_quantity_input( array(), $product, false );
$html .= '<button type="submit" class="button alt">' . esc_html( $product->add_to_cart_text() ) . '</button>';
$html .= '</form>';
}
return $html;
}
已更新
这可以通过 woocommerce_quantity_input_args
过滤器挂钩中的以下自定义挂钩函数来完成,我在其中仅针对单个产品页面上库存数量为 1 的产品。
Explanations: If you look in woocommerce source code for quantity field, you will see that
'min_value'
need to be different than'max_value'
to get the quantity field displayed.
所以有 2 个方法可以显示数量字段:
1) 将空值设置为 'max_value'
(这将允许在字段中设置任何值):
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 20, 2 );
function custom_quantity_input_args( $args, $product ) {
if( $product->get_stock_quantity() == 1 && is_product() ){
$args['max_value'] = '';
}
return $args;
}
代码进入您的活动子主题(活动主题)的 function.php 文件。
已测试并有效。
2) 将最小值设置为0
(但在这种情况下数量字段可以设置为零):
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 20, 2 );
function custom_quantity_input_args( $args, $product ) {
if( $product->get_stock_quantity() == 1 && is_product() ){
$args['min_value'] = 0;
}
return $args;
}
代码进入您的活动子主题(活动主题)的 function.php 文件。
已测试并有效。
3) 另一种方式:
You can enable back orders option for each product… that will always display the quantity field.