在Woocommerce中,我的单个产品需要固定数量。
例如数量:
100,300,500,1000,1200 & 1500
如何自定义?
答案 0 :(得分:1)
要自定义数量,您可以在单个产品页面上使用过滤钩woocommerce_quantity_input_args
。
此钩子有2个参数:
- 返回的
$args
参数可处理:
- 带有
$args['input_value']
(默认值为1
)的“输入默认值”- 带有
$args['max_value']
的“最大允许值”(默认值为-1
)- 带有
的“最小允许值”$args['min_value']
(默认值为0
)- 带有
的“步骤默认值”$args['step']
(默认值为1
)- 带有
$args['pattern']
(默认值为'[0-9]*'
)的“模式默认值”- 带有
的“模式默认值”$args['inputmode']
(默认值为'numeric*'
)- 通过
WC_Product
对象$product
,您可以定位特定的产品。
但是您还需要处理购物车页面中的数量字段,客户可以在其中编辑购物车项目的产品数量。
注意:您不能使用可变步长,因为它是恒定的数值。
按产品定义特定数量 (用于简单产品):
您可以在产品中添加一个自定义字段,以处理固定数量的产品(对于简单产品):
// Adding and displaying additional product quantity custom fields
add_action( 'woocommerce_product_options_pricing', 'additional_product_pricing_option_fields', 50 );
function additional_product_pricing_option_fields() {
$domain = "woocommerce";
global $post;
echo '</div><div class="options_group pricing">';
woocommerce_wp_text_input( array(
'id' => '_input_qty',
'label' => __("Input quantity", $domain ),
'placeholder' => '',
'description' => __("Input quantity explanation goes here…", $domain ),
'desc_tip' => true,
) );
woocommerce_wp_text_input( array(
'id' => '_step_qty',
'label' => __("Step quantity", $domain ),
'placeholder' => '',
'description' => __("Step quantity explanation goes here…", $domain ),
'desc_tip' => true,
) );
}
// Saving product custom quantity values
add_action( 'woocommerce_admin_process_product_object', 'save_product_custom_meta_data', 100, 1 );
function save_product_custom_meta_data( $product ){
if ( isset( $_POST['_input_qty'] ) )
$product->update_meta_data( '_input_qty', sanitize_text_field($_POST['_input_qty']) );
if ( isset( $_POST['_step_qty'] ) )
$product->update_meta_data( '_step_qty', sanitize_text_field($_POST['_step_qty']) );
}
// Set product quantity field by product
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 10, 2 );
function custom_quantity_input_args( $args, $product ) {
if( $product->get_meta('_input_qty') ){
$args['input_value'] = is_cart() ? $args['input_value'] : $product->get_meta('_input_qty');
$args['min_value'] = $product->get_meta('_input_qty');
}
if( $product->get_meta('_step_qty') ){
$args['step'] = $product->get_meta('_step_qty');
}
return $args;
}
代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。
处理步骤
以下示例将从100开始,并以100为步长:
add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 10, 2 );
function custom_quantity_input_args( $args, $product ) {
$args['input_value'] = is_cart() ? $args['input_value'] : 100;
$args['min_value'] = 100;
$args['step'] = 100;
return $args;
}
对于产品变化(可变产品的) ,您将需要额外使用:
add_filter( 'woocommerce_available_variation', 'custom_qty_available_variation_args', 10, 3 );
function custom_qty_available_variation_args( $data, $product, $variation ) {
$data['min_qty'] = 100;
return $data;
}
代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。
答案 1 :(得分:0)
这不会更改商店页面中的“添加到购物车”按钮。因此,当用户单击“添加到购物车”时,它仍将商品添加到购物车中,数量为1,而不是定义的100、200或此类。
将此添加到您的functions.php文件中,以覆盖特定产品ID的“添加到购物车”按钮,以便该按钮链接到产品页面,而不是添加到购物车。
add_filter( 'woocommerce_loop_add_to_cart_link', 'replacing_add_to_cart_button', 10, 2 );
function replacing_add_to_cart_button( $button, $product ) {
$specific_ids = array(2917, 2918, 2919, 2920);
if( in_array($product->get_id(), $specific_ids) ) {
$button_text = __("View product", "woocommerce");
$button = '<a class="button" href="' . $product->get_permalink() . '">' .
$button_text . '</a>';
}
return $button;
}
此代码更改已添加到购物车中用于定义产品ID的特定按钮。
哦,感谢您删除我的回复。我目前无法发表评论,因为没有足够的分数,所以我不得不这样做。
关于, 米尔纳