简体   繁体   English

woocommerce 购物车,带有多个小计来自相同产品的多个价格

[英]woocommerce cart with multiple subtotals from same products with multiple prices

I am trying to make a store that the products have multiple prices, one for every supplier.我正在尝试建立一个产品有多种价格的商店,每个供应商都有一个价格。 And when i choose the products, show in the cart the prices and subtotals of each supplier.当我选择产品时,在购物车中显示每个供应商的价格和小计。 For example, i enter the store, then choose sugar and milk without knowing the prices, proceed to cart and in the cart page i can see: Sugar- Store 1 $10- Store 2 $20 / Milk - Store 1 $20 - Store 2 $30---Subtotal Store 1=$30 Store 2=$50.例如,我进入商店,然后在不知道价格的情况下选择糖和牛奶,继续购物车,在购物车页面中我可以看到:Sugar- Store 1 $10- Store 2 $20 / Milk - Store 1 $20 - Store 2 $30- --小计商店 1=30 美元商店 2=50 美元。 And that's it, i dont need to proceed with checkout, it's only to compare stores prices from equal products.就是这样,我不需要进行结帐,只是比较同等产品的商店价格。 i try variable products, i get to show the prices on cart but i can't make more than one subtotal array by the variable id.我尝试了可变产品,我可以在购物车上显示价格,但我不能通过可变 id 制作多个小计数组。 Any ideas?有任何想法吗?

well, maybe this answer will help someone else in the future, i figure it out, i leave the function here just in case

   

 // Muestra los custom fields en el carrito
add_filter( 'woocommerce_get_item_data', 'super_custom_field', 10, 2 );
function super_custom_field( $cart_data, $cart_item ) 
{
    $items_super = array();

    if( !empty( $cart_data ) )
        $custom_items = $cart_data;

    // Los busca desde el id
    $product_id = $cart_item['product_id'];
    
    $supermercado_1 = get_field('super_1',7);
    $supermercado_2 = get_field('super_2',7);   
    $supermercado_3 = get_field('super_3',7);       

    if( $precio_1 = get_post_meta( $product_id, 'precio_1', true ))
    if( $precio_2 = get_post_meta( $product_id, 'precio_2', true ))
    if( $precio_3 = get_post_meta( $product_id, 'precio_3', true ))  
        
        $items_super[] = array(
            'name'      => __( 'Precios en supermercados', 'woocommerce'),
            'display'   => '<div>
                            <p class="super1 supermercados"><strong>' . ($supermercado_1). '</strong> <span>$' . ($precio_1). '</span></p>
                            <p class="super2 supermercados"><strong>' . ($supermercado_2). '</strong> <span>$' . ($precio_2). '</span></p>
                            <p class="super3 supermercados"><strong>' . ($supermercado_3). '</strong> <span>$' . ($precio_3). '</span></p>
                            </div>',

        );

    return $items_super;
}

//Suma los custom field de precio 1
//Elige el lugar donde lo muestra
add_filter( 'woocommerce_after_cart_contents', 'suma_precio_1', 10, 2 );
//este es despues del carro antes del checkout
add_action( 'woocommerce_cart_totals_before_shipping', 'suma_precio_1', 20 );
//este es en el checkout
add_action( 'woocommerce_review_order_before_shipping', 'suma_precio_1', 20 );


function suma_precio_1() {
    $total_1 = 0;

    $supermercado_1 = get_field('super_1',7);

    // Busca en el loop del carro el cutom field en cada producto y los suma y multiplica por la cantidad
    foreach( WC()->cart->get_cart() as $cart_item ){
        $precio_super_1 = (float) get_post_meta( $cart_item['product_id'], 'precio_1', true );
        $total_1  += $precio_super_1 * $cart_item['quantity'];
    }
    if( $total_1 > 0 ){

        // The Output
        echo ' <tr class="super1">
            <td colspan="5"><p><strong>' .$supermercado_1.  '</strong></td> <td colspan="" style="text-align:right;"><span>$' . number_format($total_1, 2) . '</span></p></td>
        </tr>';
    }
}


//Suma los custom field de precio 1
//Elige el lugar donde lo muestra
add_filter( 'woocommerce_after_cart_contents', 'suma_precio_2', 10, 2 );
//este es despues del carro antes del checkout
add_action( 'woocommerce_cart_totals_before_shipping', 'suma_precio_2', 20 );
//este es en el checkout
add_action( 'woocommerce_review_order_before_shipping', 'suma_precio_2', 20 );


function suma_precio_2() {
    $total_2 = 0;

    $supermercado_2 = get_field('super_2', 7);

    // Busca en el loop del carro el cutom field en cada producto y los suma y multiplica por la cantidad
    foreach( WC()->cart->get_cart() as $cart_item ){
        $precio_super_2 = (float) get_post_meta( $cart_item['product_id'], 'precio_2', true );
        $total_2  += $precio_super_2 * $cart_item['quantity'];
    }
    if( $total_2 > 0 ){

        // The Output
        echo ' <tr class="super2">
            <td colspan="5"><p><strong>' .$supermercado_2.  '</strong></td> <td colspan="" style="text-align:right;"><span>$' . number_format($total_2, 2) . '</span></p></td>
        </tr>';
    }
}
//Suma los custom field de precio 1
//Elige el lugar donde lo muestra
add_filter( 'woocommerce_after_cart_contents', 'suma_precio_3', 10, 2 );
//este es despues del carro antes del checkout
add_action( 'woocommerce_cart_totals_before_shipping', 'suma_precio_3', 20 );
//este es en el checkout
add_action( 'woocommerce_review_order_before_shipping', 'suma_precio_3', 20 );


function suma_precio_3() {
    $total_3 = 0;

    $supermercado_3 = get_field('super_3', 7);

    // Busca en el loop del carro el custom field en cada producto y los suma y multiplica por la cantidad
    foreach( WC()->cart->get_cart() as $cart_item ){
        $precio_super_3 = (float) get_post_meta( $cart_item['product_id'], 'precio_3', true );
        $total_3  += $precio_super_3 * $cart_item['quantity'];
    }
    if( $total_3 > 0 ){

        // The Output
        echo ' <tr class="super3">
            <td colspan="5"><p><strong>' .$supermercado_3.  '</strong></td> <td colspan="" style="text-align:right;"><span>$' . number_format($total_3, 2) . '</span></p></td>
        </tr>';
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Woocommerce多个产品无法购物? - Woocommerce multiple products to cart not working? 有条件地更改Woocommerce中的多个特定产品价格 - Conditionally alter multiple specifics products prices in Woocommerce 在访问WooCommerce时自动将多种产品添加到购物车 - Automatically add multiple products to cart on visit WooCommerce WooCommerce-如何使用具有相同购物车按钮的Ajax将多种不同的产品添加到购物车? - WooCommerce - How can I add multiple, different products to cart using ajax with same add-to-cart-Button? 从MySQL中的多个表中对产品价格进行排序 - Sort products prices from multiple tables in MySQL Woocommerce- 购物车中相同产品的不同价格 - Woocommerce- Different prices for same product in cart 无法在购物车中的WooCommerce中添加多个可变订阅产品 - Unable to add multiple variable subscription products in WooCommerce in Cart WooCommerce 将多个产品的自定义重定向添加到购物车 - WooCommerce Add to Cart custom redirection for multiple products Variations 具有相同购物车ID的多个Woocommerce会话 - Multiple Woocommerce Session with same cart id 使用 SKU 和 URL 参数一次将多个产品添加到 WooCommerce 购物车 - Adding multiple products to WooCommerce cart at once with SKU and URL parameters
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM