2017-03-03 13 views
1

私はショッピングカートに追加したいアイテムのIDが3つあります。 私はhttps://url.com/shop/cart/?add-to-cart=3001を使うことができましたが、私は3つの項目を追加したいときはできません。この機能をショッピングウェブサイトに追加するために追加できる機能/スクリプトはありますか?WooCommerceカートに一度に複数の商品を追加する

私はadd-to-cart&を追加しようとしましたし、新しい値を追加しようとしたが、右の上書きを取得取得します?: https://url.com/shop/cart/?add-to-cart=3001&add-to-cart=2002&add-to-cart=1001

答えて

1

私は答えを見つけました!

function woocommerce_maybe_add_multiple_products_to_cart() { 
// Make sure WC is installed, and add-to-cart qauery arg exists, and contains at least one comma. 
if (! class_exists('WC_Form_Handler') || empty($_REQUEST['add-to-cart']) || false === strpos($_REQUEST['add-to-cart'], ',')) { 
    return; 
} 

// Remove WooCommerce's hook, as it's useless (doesn't handle multiple products). 
remove_action('wp_loaded', array('WC_Form_Handler', 'add_to_cart_action'), 20); 

$product_ids = explode(',', $_REQUEST['add-to-cart']); 
$count  = count($product_ids); 
$number  = 0; 

foreach ($product_ids as $product_id) { 
    if (++$number === $count) { 
     // Ok, final item, let's send it back to woocommerce's add_to_cart_action method for handling. 
     $_REQUEST['add-to-cart'] = $product_id; 

     return WC_Form_Handler::add_to_cart_action(); 
    } 

    $product_id  = apply_filters('woocommerce_add_to_cart_product_id', absint($product_id)); 
    $was_added_to_cart = false; 
    $adding_to_cart = wc_get_product($product_id); 

    if (! $adding_to_cart) { 
     continue; 
    } 

    $add_to_cart_handler = apply_filters('woocommerce_add_to_cart_handler', $adding_to_cart->product_type, $adding_to_cart); 

    /* 
    * Sorry.. if you want non-simple products, you're on your own. 
    * 
    * Related: WooCommerce has set the following methods as private: 
    * WC_Form_Handler::add_to_cart_handler_variable(), 
    * WC_Form_Handler::add_to_cart_handler_grouped(), 
    * WC_Form_Handler::add_to_cart_handler_simple() 
    * 
    * Why you gotta be like that WooCommerce? 
    */ 
    if ('simple' !== $add_to_cart_handler) { 
     continue; 
    } 

    // For now, quantity applies to all products.. This could be changed easily enough, but I didn't need this feature. 
    $quantity   = empty($_REQUEST['quantity']) ? 1 : wc_stock_amount($_REQUEST['quantity']); 
    $passed_validation = apply_filters('woocommerce_add_to_cart_validation', true, $product_id, $quantity); 

    if ($passed_validation && false !== WC()->cart->add_to_cart($product_id, $quantity)) { 
     wc_add_to_cart_message(array($product_id => $quantity), true); 
    } 
} 
} 

// Fire before the WC_Form_Handler::add_to_cart_action callback. 
add_action('wp_loaded',  'woocommerce_maybe_add_multiple_products_to_cart', 15); 

をそして、あなたは、単に一度に複数の項目を追加するためにhttp://shop.com/shop/cart/?add-to-cart=3001,3282を使用することができます。

単にあなたのテーマののfunctions.phpに以下のスクリプトを追加します。異なるIDの間にコンマを入れます。

このソリューションはdsgnwrksです。

関連する問題