在WooCommerce中将可变产品的自定义属性添加到购物车

在WooCommerce中将可变产品的自定义属性添加到购物车

问题描述:

我想在用户选择自定义属性(责任和小时数)后将我的自定义商店页面重定向到购物车页面,然后单击购买按钮。在WooCommerce中将可变产品的自定义属性添加到购物车

我写这检索variation_id和属性值,并将其添加到URL,这样它会自动被添加到购物车,并获得的重定向到购物车页面自定义的JS代码。

href="yourdomain.com/?add-to-cart=47&variation_id=88&quantity=3&attribute_pa_colour=blue&attribute_pa_size=m" 

这是我在博客中已经发现了URL格式:(https://businessbloomer.com/woocommerce-custom-add-cart-urls-ultimate-guide/)和我做了这种格式我的链接。

我的链接是:

localhost/wordpress/cart/?add-to-cart=1185&variation_id=1641&quantity=1&attribute_pa_liability=2_million&attribute_pa_hours=500_hours 

凡责任和时间是具有价值100万,200万和500小时,分别750小时我的自定义属性。

但是,当它获得的重定向到购物车页面woocommerce给我一个错误,并显示它的提示框,显示错误消息“的责任和小时为必填项”。

我认为woocommerce无法通过我的网址获取属性值。

任何人都可以解释为什么会发生这种情况,如果有什么错误?

+0

如何在结帐页面上获得这些属性? – madalinivascu

+0

我从函数membership_forms_handler中的$ _GET中检索attribute_pa_liability和attribute_pa_hours的值,并检查是否选择了所有属性下拉列表并检索该值并创建用户重定向到的链接。下面是使用的代码:$ redirect_url = home_url()。“/ cart /?add-to-cart =”。$ _ GET [“membership_product”]。“&variation_id =”。$ _ GET ['variation_id']。“ &量=”。$ _ GET [ “量”。 “&attribute_pa_liability =&attribute_pa_hours = ”$ _ GET [ 'attribute_pa_hours']“ $ _ GET [ 'attribute_pa_liability']。”。 wp_redirect($ redirect_url); –

+0

当用户重定向时,如何获取该页面上的参数?我的意思是在本地主机/ wordpress/cart /?add-to-cart = 1185&variation_id = 1641&quantity = 1&attribute_pa_liability = 2_million&attribute_pa_hours = 500_hours' – madalinivascu

更新

这种 “商业成名” 指南是有点过时......你需要两件事情:

1)。正确的URL

您无需将产品及变体Id添加到购物车中,即可获得所有相关属性。你只需要添加到购物车的变化ID +你的自定义属性是这样的:localhost/wordpress/cart/?add-to-cart=1641&quantity=1&pa_liability=2_million&pa_hours=500_hours

2)。注册(和显示)您的自定义属性:

// Store the custom data to cart object 
add_action('woocommerce_add_cart_item_data', 'save_custom_product_data', 10, 2); 
function save_custom_product_data($cart_item_data, $product_id) { 
    $bool = false; 
    $data = array(); 
    if(isset($_REQUEST['pa_liability'])) { 
     $cart_item_data['custom_data']['pa_liability'] = $_REQUEST['pa_liability']; 
     $data['pa_liability'] = $_REQUEST['pa_liability']; 
     $bool = true; 
    } 
    if(isset($_REQUEST['pa_hours'])) { 
     $cart_item_data['custom_data']['pa_hours'] = $_REQUEST['pa_hours']; 
     $data['pa_hours'] = $_REQUEST['pa_hours']; 
     $bool = true; 
    } 
    if($bool) { 
     // below statement make sure every add to cart action as unique line item 
     $cart_item_data['custom_data']['unique_key'] = md5(microtime().rand()); 
     WC()->session->set('custom_variations', $data); 
    } 
    return $cart_item_data; 
} 

// Displaying the custom attributes in cart and checkout items 
add_filter('woocommerce_get_item_data', 'customizing_cart_item_data', 10, 2); 
function customizing_cart_item_data($cart_data, $cart_item) { 
    $custom_items = array(); 
    if(! empty($cart_data)) $custom_items = $cart_data; 

    // Get the data (custom attributes) and set them 
    if(! empty($cart_item['custom_data']['pa_liability'])) 
     $custom_items[] = array(
      'name'  => 'pa_liability', 
      'value'  => $cart_item['custom_data']['pa_liability'], 
     ); 
    if(! empty($cart_item['custom_data']['pa_hours'])) 
     $custom_items[] = array(
      'name'  => 'pa_hours', 
      'value'  => $cart_item['custom_data']['pa_hours'], 
     ); 
    return $custom_items; 
} 

代码放在您的活动子主题(或主题)的function.php文件或也以任何插件文件。

测试和工程

您需要将这些数据添加到订单项目太

首先取消了ajax从管理面板 然后添加到购物车选项,你需要做出变化随着你的属性,然后找出产品ID,数量,属性slug和属性名称(用于显示在购物车中)和变体ID,然后使您的购物车网址如下所示。

该加载到购物车与属性链接是:https://www.your-domain.com/?add-to-cart=(product ID)&量=(数值量)& attribute_pa_(属性蛞蝓)=(属性名)& variation_id =(变化ID)

详情您可以访问http://www.codemystery.com/wordpress-woocommerce-add-cart-link-variations/