我有一个使用 woocommerce 运行的网上商店。网上商店有不同的产品。当我添加具有相同变体的相同产品时,我希望它生成一个新的 order_item_id,而不是将两者结合在同一个 order_item_id 下。
我似乎找不到负责生成 order_item_id 的代码。
谁能告诉我这段代码在哪里?
我的目标是让每个产品都独一无二,而不是堆叠相同的物品。
-编辑
好的,所以我将其范围缩小到 class-wc-cart.php
在第 782 行,使用以下代码生成产品 ID:
public function generate_cart_id( $product_id, $variation_id = '', $variation = '', $cart_item_data = array() ) {
$id_parts = array( $product_id );
if ( $variation_id ) $id_parts[] = $variation_id;
if ( is_array( $variation ) ) {
$variation_key = '';
foreach ( $variation as $key => $value ) {
$variation_key .= trim( $key ) . trim( $value );
}
$id_parts[] = $variation_key;
}
if ( is_array( $cart_item_data ) && ! empty( $cart_item_data ) ) {
$cart_item_data_key = '';
foreach ( $cart_item_data as $key => $value ) {
if ( is_array( $value ) ) $value = http_build_query( $value );
$cart_item_data_key .= trim($key) . trim($value);
}
$id_parts[] = $cart_item_data_key;
}
return md5( implode( '_', $id_parts ) );
}
现在剩下的就是通过时间戳或其他东西编辑一个唯一的 ID。会及时通知你们。