将多个自定义数据数组添加到WooCommerce自定义Ajax上的购物车项目中添加到购物车

时间:2020-10-06 15:08:47

标签: php wordpress woocommerce metadata cart

因此,当前在WooCommerce中启用了通过管理员将自定义Ajax添加到购物车的功能,该功能使我可以如下添加自定义其他数据:

$cart->add_to_cart($product_id , 1, 0, $variation, array('tmcartepo'=>$extra_options_data  ) );

效果很好。

但是问题是,我需要在add_to_cart()上设置2(两个)自定义附加数据数组。

非常感谢您的帮助。

基本上,此站点具有产品设计器和产品的其他自定义字段,所有字段均由单独的插件管理。我的任务是在我的帐户中创建单个产品的重新订购。因此,我想将新产品添加到购物车,并为该产品设置两个带有元数据的不同数组。

1 个答案:

答案 0 :(得分:1)

假设$extra_options_data变量是一个数组,您可以将其嵌入另一个数组,这将允许添加第二个$extra_options_data_2变量数组,例如:

$custom_data = array( 'tmcartepo'=> array( 
    'option1' => $extra_options_data,
    'option2' => $extra_options_data_2,
) );

$cart->add_to_cart( $product_id , 1, 0, array(), $custom_data );

然后,您将在购物车中的商品同时通过以下方式访问:

// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item ) {
    // Access first custom data array
    if( isset($cart_item['tmcartepo']['option1']) && ! empty($cart_item['tmcartepo']['option1']) ) {
        $extra_options_data = $cart_item['tmcartepo']['option1'];
    }

    // Access Second custom data array
    if( isset($cart_item['tmcartepo']['option1']) && ! empty($cart_item['tmcartepo']['option1']) ) {
        $extra_options_data_2 = $cart_item['tmcartepo']['option2'];
    }
}

或者您也可以按以下方式使用它:

$custom_data = array( 
    'tmcartepo'  => $extra_options_data,
    'tmcartepo2' => $extra_options_data_2,
);

然后,您将在购物车中的商品同时通过以下方式访问:

// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item ) {
    // Access first custom data array
    if( isset($cart_item['tmcartepo']) && ! empty($cart_item['tmcartepo']) ) {
        $extra_options_data = $cart_item['tmcartepo'];
    }

    // Access Second custom data array
    if( isset($cart_item['tmcartepo2']) && ! empty($cart_item['tmcartepo2']) ) {
        $extra_options_data_2 = $cart_item['tmcartepo2'];
    }
}