Woocommerce - 购物车页面 - 更改购物车产品序列(旅行套餐)

时间:2014-10-29 21:29:57

标签: woocommerce cart

我正在尝试用woocommerce销售自建的旅行套餐。因此,访问者会选择一些他们喜欢的酒店,活动和交通工具,然后将它们添加到购物车中。

我面临的问题是商品(旅游产品)按照添加的顺序添加到购物车中。

但是,我需要这样的功能:管理员或访客将能够重新安排这些项目出现在购物车中的位置(序列)。也许像AJAX拖放功能会很棒。

有办法吗?

聚苯乙烯。我没有提到更改目录中出现的订单产品,插件很容易。

请给我一些指示。谢谢。

1 个答案:

答案 0 :(得分:0)

我曾经考虑过从我的插件中重新订购购物车中的商品,但最终认为它对我来说不值得。这就是我要使用的内容:

add_action( 'woocommerce_cart_loaded_from_session', 'so_26640996_reorder_cart_keys' );

/**
 * Re-order the cart keys to keep container/bundled items from being separated in case of force-sells
 * @param  object   $cart - the WC_Cart class
 * @return void
 */
function so_26640996_reorder_cart_keys( $cart ){

    if( $cart->cart_contents ) { 

        $new = array();

        $contents = $cart->cart_contents;

        // loop through the cart's contents
        foreach( $cart->cart_contents as $cart_key => $cart_item ){

            // add the item back into a new array of cart contents
            $new[$cart_key]=$cart_item;

            // if the cart item meets some condition re-arrange its position
            if( isset( $cart_item['mnm_contents'] ) && is_array( $cart_item['mnm_contents'] ) ){
                foreach($cart_item['mnm_contents'] as $key){
                    if( isset( $contents[$key] ) ){
                        $new[$key] = $contents[$key];
                        unset($contents[$key]);
                    }
                }
            }

        }

        $cart->cart_contents = $new;

    }

}

它并不完全适合你的问题(而且也很晚)但也许它可以帮助有同样问题的人。