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

Php Woocommerce-购物车中相同产品的不同价格,php,wordpress,woocommerce,product,price,Php,Wordpress,Woocommerce,Product,Price,我正在为一位亲戚的生意开一家电子商务商店。他拥有用户必须在网站上个性化的产品。我正在编写一个单独的页面,允许用户执行此操作,该页面将链接回商店,并在完成后将商品添加到购物车。 我找到了一个解决方案,将每个产品分别添加到购物车中,而不是添加到数量中(因为添加的每个产品都是个性化的),以及一个更改购物车中物品价格的解决方案 问题是,所有项目都已更改,而不仅仅是最后添加的项目。 例如:用户设计了一支圆珠笔,上面写着她的名字。价格是4美元。然后用户用自己的名字设计了一支中性笔。购物车将显示两个单独的

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

问题是,所有项目都已更改,而不仅仅是最后添加的项目。 例如:用户设计了一支圆珠笔,上面写着她的名字。价格是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();
}

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

在你说“是”之前,他们为此收费是很烦人的,事实上,这对于人们来说是一件很常见的事情,你可以看出,将其货币化是一个经过深思熟虑的决定。是的,它仍然是非常有可能的程序一切定制,但你不可避免地重新发明轮子没有其他原因,除了避免支付功能(有免费版本的插件上面,其他人已经作出,谷歌是你的朋友)

考虑一下,如果Automatic将来更改其挂钩会怎么样?你必须修改你的代码,假设你在它破坏网站之前发现了。如果您希望更改选项,或者您需要其他人更改选项,而您不在身边,该怎么办

如果你仔细考虑一下,你会发现最终的最佳选择是要么获取官方插件,要么使用一个免费的替代品。相信我,我在帮你一个忙


Koda

请提供更多关于WooCommerce实现的详细信息,并尝试将产品作为变量集成。我添加了代码。我不知道当用户定制每支“笔”时,如何单独定价,因为它们都有相同的ID。谢谢。我考虑过这些类型的插件,但没有购买,只是因为该网站有一个非常具体的外观和感觉,我不知道我是否能够实现这一点。我确实买了一个,结果是浪费钱。他们希望这是一个循序渐进的过程,对客户来说是互动的,但我也许我可以解决这个问题。你可以,尤其是官方的,因为他们提供了可以覆盖的模板,就像你在WooCommerce的其余部分中获得的模板一样。你真的不想重新编码的部分是管理方面的事情,因为它要么会花费你太长的时间来实现,要么它不会是一个足够的替代品为那些已经可用。我不是怀疑你的能力,只是纯粹凭经验。