【问题标题】:Add multiple custom data arrays to cart item on WooCommerce custom Ajax add to cart将多个自定义数据数组添加到 WooCommerce 自定义 Ajax 上的购物车项目添加到购物车
【发布时间】:2021-01-21 12:02:13
【问题描述】:

因此,目前在 WooCommerce 中启用了通过管理员添加到购物车的自定义 Ajax,它允许我添加自定义附加数据,如下所示:

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

而且效果很好。

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

非常感谢任何帮助。

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

【问题讨论】:

    标签: php wordpress woocommerce metadata cart


    【解决方案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'];
        }
    }
    

    【讨论】:

    • 嘿,非常感谢,不知道为什么我以前没有想到过,发送两个这样的数组解决了这个问题。
    猜你喜欢
    • 2015-12-04
    • 2017-10-14
    • 2018-05-18
    • 1970-01-01
    • 2018-06-08
    • 2021-04-21
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多