Woocommerce-购物车中同一产品的不同价格

时间:2017-09-08 19:59:19

标签: php wordpress woocommerce product price

我正在为亲戚的业务创建一个电子商务商店。他拥有用户必须在网站上个性化的产品。我正在编写一个单独的页面,允许用户执行此操作,该页面将链接回商店并在完成后将项目添加到购物车。 我找到了一个解决方案,可以将每个产品分别添加到购物车,而不是添加到数量(因为每个添加的产品都已经个性化),以及一个改变购物车中商品价格的解决方案。

WooCommerce: Add product to cart with price override? https://businessbloomer.com/woocommerce-display-separate-cart-items-product-quantity-1/

问题是所有项目都已更改,而不仅仅是最后添加的项目。 例如:用户设计一个带有她名字的圆珠笔。价格是4美元。然后用户用她的名字设计一支中性笔。购物车将显示两个单独的笔,计算价格增加,但所有笔的价格将增加,而不仅仅是最后添加的笔。我需要找到一种方法来根据产品构建页面发送的价格设置最后添加的项目的价格。到目前为止,我所尝试的一切都没有效果。

变量产品不适用于此网站。

//To display a product separately every time it is added 
function bbloomer_split_product_individual_cart_items( $cart_item_data, $product_id ){
    $unique_cart_item_key = uniqid();
    $cart_item_data['unique_key'] = $unique_cart_item_key;
    return $cart_item_data;
}

add_filter( 'woocommerce_add_cart_item_data','bbloomer_split_product_individual_cart_items', 10, 2 );


add_filter( 'woocommerce_is_sold_individually', '__return_true' );


//To change the item price programmatically. Changes all items with the same ID
//I need it to change only the last one added.
//Set to retrieve new price from the customizing page

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
/**
 * @param $cart_obj
 */
function add_custom_price($cart_obj ) {
    ob_start();
    include 'createbb.php';

    global $custom_price;
    $target_product_id = 17;
    //  This is necessary for WC 3.0+
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    foreach ( $cart_obj->get_cart() as $key => $value ) {
        if ($value['product_id'] == $target_product_id) {
            $value['data']->set_price($custom_price);
        }
    }
    ob_end_clean();
}

1 个答案:

答案 0 :(得分:0)

您正在寻找的功能类型实际上非常常见,它的名称为“产品选项”(这与变体不同)。此功能允许您通过编辑产品页面上的设计将可配置的附加组件添加到产品的价格中。在许多电子商务平台中,比如OpenCart,你可以免费内置这种功能,但是Automattic选择将它作为一个单独的螺栓保存在其上:

https://woocommerce.com/products/product-add-ons/

在你说是的之前,他们为它收费是令人讨厌的,真的这对于人们要求你可以说它是一个计算出来的货币化决定是很常见的事情。是的,仍然很可能对所有定制的东西进行编程,但你不可避免地重新发明轮子,除了避免支付该功能之外(上面有其他人制作的插件的免费版本,google是你的朋友)。

考虑一下,如果Automattic将来改变他们的钩子怎么办?你必须修改你的代码,假设你在它之前找到了borks网站。如果您希望更改选项,或者您需要其他人更改选项并且您不在身边,该怎么办?

如果你权衡一下,你会发现最好的选择是获取官方插件,还是使用其中一种免费替代品。相信我,我帮你一个忙。