首页 > 解决方案 > Woo Commerce Custom Quick Shop 脚本将商品添加到购物车有时无法添加

问题描述

我有一个 Woo Commerce 商店,它有一个自定义的“快速商店”页面。此页面输出特定类别的所有产品。它允许用户在他们想要购买的任何物品旁边增加数量。然后,他们单击“将所选项目添加到购物车”按钮。这将获取表单数据,将其与商店产品进行匹配,将其整理好,然后对其进行迭代以将每个产品添加到购物车中。最后,它将用户重定向到购物车页面。

发生的事情是,有时,我们使用快速商店,当我们被重定向时,有些物品丢失了。但是,我们总是会收到一条消息,说明该项目已被添加。

但是我们注意到,如果在使用快速商店之前篮子是空的,那么它有时可以正常工作,但有时它会显示为空,直到我们刷新然后项目出现。

如果篮子里已经有一些物品,那么有些物品会丢失,刷新也无济于事。

在处理了原始 $_POST 数据之后,我们最终得到了一个类似下面的数组:

Array ( [0] => Array ( [category_id] => 1075 [product_id] => 27020 [quantity] => 1 [attributes] => Array ( [colour] => Navy [size] => Large ) [variation_id] => 38172 ) [1] => Array ( [category_id] => 1075 [product_id] => 27550 [quantity] => 1 ) )

然后我们迭代它如下:

// Add products to the cart
foreach ($products_to_add as $product) {
    $passed_validation = apply_filters('woocommerce_add_to_cart_validation', true, $product['product_id'], $product['quantity']);

    if (isset($product['variation_id'])) {
        if ($passed_validation && false !== WC()->cart->add_to_cart($product['product_id'], $product['quantity'], $product['variation_id'], wc_get_product_variation_attributes($product['variation_id']))) {
            wc_add_to_cart_message($product['product_id']);
        }
    } else {
        if ($passed_validation && false !== WC()->cart->add_to_cart($product['product_id'], $product['quantity'])) {
            wc_add_to_cart_message($product['product_id']);
        }         
    }
}

在这个循环之后,我们有一些额外的位,然后是重定向:

// Calculate totals
WC()->cart->calculate_totals();

// Save cart to session
WC()->cart->set_session();     

// Set cookies if needed
WC()->cart->maybe_set_cart_cookies();

wp_safe_redirect( wc_get_cart_url() );
exit();

我真的不认为这是产品问题。我认为这可能是我在上面发布的几行的问题,但我不能 100% 确定在预先在循环中以编程方式将所有项目添加到购物车后应该运行什么。

任何对 WooCommerce 有深入了解的人都可以帮助我们吗?

谢谢。

标签: phpwordpresswoocommerce

解决方案


根据您的产品设置方式,可能存在不同的问题。如果您使用的是 ajax,请不要忘记WC_AJAX :: get_refreshed_fragments();在检查验证后运行。


推荐阅读