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

Sunny Ramrakhiani

用户选择自定义属性(责任和工作时间),然后单击购买按钮后,我试图将我的自定义商店页面重定向到购物车页面。

我已经编写了自定义JS代码,该代码检索variant_id和attributes值并将其附加到URL,以便将其自动添加到购物车并将其重定向到购物车页面。

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无法通过我的URL获取属性值。

谁能解释这是为什么发生的,如果有的话,错误是什么?

LoicTheAztec

更新

该“ Business Bloomer”指南有些过时了……您需要两件事:

1)。正确的网址

您无需将具有所有相关属性的产品和版本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_filter( '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文件中,或者在任何插件文件中。

经过测试和工作

您也需要将此数据添加到订单项中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在woocommerce中使用Ajax将可变产品添加到购物车

添加到购物车并重定向到WooCommerce中的可变产品的结帐

当 Woocommerce 中的可变产品缺货时隐藏添加到购物车块

在可变的单个产品页面中自定义添加到购物车按钮/链接

Woocommerce隐藏添加到购物车按钮,可变产品除外

自定义添加到购物车按钮以将多个产品添加到购物车中,数量为:woocommerce

也可以使用ACF在WooCommerce购物车中为可变产品获取自定义字段

WooCommerce自定义产品类型-多个添加到购物车部分的问题

将自定义产品计算价格添加到Woocommerce购物车

单个Woocommerce产品自定义变体添加到购物车按钮

根据WooCommerce产品自定义库存状态禁用添加到购物车按钮

Woocommerce 产品添加到购物车自定义数据 img

WooCommerce添加到购物车,从自定义选择字段中添加第二个产品

通过WooCommerce产品设置中的自定义复选框禁用添加到购物车按钮

根据 Woocommerce 中的自定义字段替换特定产品的 ajax 添加到购物车

在Woocommerce中的产品自定义循环上启用Ajax添加到购物车按钮

在WooCommerce中为特定产品类别自定义“添加到购物车”按钮

将产品添加到Woocommerce单个产品页面上的购物车后,激活自定义按钮

在WooCommerce订单中添加到购物车自定义字段数据

在“添加到购物车”下的自定义文本,但不在Woocommerce中

在Woocommerce 3中自定义添加到购物车消息

可变产品的“添加到购物车”功能而不是“选择选项”按钮行为

在 WooCommerce 中添加到购物车后更改自定义 Ajax 添加到购物车按钮文本

将具有自定义定价的产品添加到购物车时出错-WooCommerce

禁用 WooCommerce 产品添加到购物车以获得特定的自定义分类术语元值

根据产品类型,WooCommerce的“添加到购物车”按钮旁边的“自定义”按钮

自定义特定 WooCommerce 产品类别上的“添加到购物车”按钮

设置自定义添加到购物车默认数量(Woocommerce 购物车页面除外)

扩展“添加到购物车”功能以在Sylius的自定义表中添加产品变体