我正在WooCommerce建立一个销售医用手套的网上商店。它们按单位,箱子或托盘出售。当您通过盒子或托盘购买时,您的单价会降低。
我已经玩了一段时间,但我似乎无法按照我想要的方式获得配置。
首先让我举一个例子
产品A:
单价:€1,90
购买盒子时的单价:1,76欧元(120个单位)
购买托盘时的单价:1,63欧元(2880单位)。
我想要的是以下内容:
- 在档案页面上,它应显示:从€1,63
- 在产品页面上,用户可以选择每单位/箱/托盘购买
- 根据选择,价格应自动计算。因此,如果用户选择1个托盘,价格应为2880 * 1,63 = 4694,40。或者,如果用户选择2个托盘,价格应为(2880 * 1,63)* 2
我一直在尝试最小的最大数量。我已在变体选项卡中输入单价并添加了最小数量和步骤。例如托盘最小2880单位和2880步。基本上它可以工作但是...我认为如果他们在订单中看到2880作为数量而不是仅仅1个托盘,那么客户会感到困惑。
其他可能性是,如果我直接将总价格添加到变化标签,那么托盘的价格为4694,40欧元。这也有效,但是......在它显示的存档页面上从€1,90起。因此他们不会直接看到他们可以从1,63购买单位,如果他们每托盘购买。
我考虑使用测量价格计算器,但这些插件只能用于体积和重量等测量,而不是数量。
任何人都有这方面的经验和可能的解决方案吗? 任何帮助将受到高度赞赏。谢谢!
答案 0 :(得分:1)
您应该使用可变产品并为每种产品设置3种变体:
1)在后端:仅对于可变产品,我们为" Min单价"添加自定义设置字段。要显示。
2)在前端:仅对于可变产品,我们会显示自定义"最低单价"在商店,档案馆和单品页面。
代码:
// Backend: Add and display a custom field for variable products
add_action('woocommerce_product_options_general_product_data', 'add_custom_product_general_field');
function add_custom_product_general_field()
{
global $post;
echo '<div class="options_group hide_if_simple hide_if_external">';
woocommerce_wp_text_input(array(
'id' => '_min_unit_price',
'label' => __('Min Unit price', 'woocommerce') ,
'placeholder' => '',
'description' => __('Enter the minimum unit price here.', 'woocommerce'),
'desc_tip' => 'true',
));
echo '</div>';
}
// Backend: Save the custom field value for variable products
add_action('woocommerce_process_product_meta', 'save_custom_product_general_field');
function save_custom_product_general_field($post_id)
{
if (isset($_POST['_min_unit_price'])){
$min_unit_price = sanitize_text_field($_POST['_min_unit_price']);
// Cleaning the min unit price for float numbers in PHP
$min_unit_price = str_replace(array(',', ' '), array('.',''), $min_unit_price);
// Save
update_post_meta($post_id, '_min_unit_price', $min_unit_price);
}
}
// Frontend: Display the min price with "From" prefix label for variable products
add_filter( 'woocommerce_variable_price_html', 'custom_min_unit_variable_price_html', 30, 2 );
function custom_min_unit_variable_price_html( $price, $product ) {
$min_unit_price = get_post_meta( $product->get_id(), '_min_unit_price', true );
if( $min_unit_price > 0 ){
$min_price_html = wc_price( wc_get_price_to_display( $product, array( 'price' => $min_unit_price ) ) );
$price = sprintf( __( 'From %1$s', 'woocommerce' ), $min_price_html );
}
return $price;
}
代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。