【发布时间】:2021-03-22 12:38:09
【问题描述】:
我正在尝试在“父订单”和“子订单”之间实现订单前缀。目前我的订单前缀适用于特定类别的产品,因此“商品”类别和其中的产品具有订单号前缀“M”,“咖啡”中的类别和产品具有前缀“C”,这一切都很好,精彩地看到所附的图像。
我确实在商店中有订阅产品和单品,但我主要只是希望在主订单中显示一个“P”,而不管产品属于哪个类别。
我需要并且希望帮助为父订单添加一个“P”,以便我可以区分父订单和子订单,(请参阅附图)我一生都无法弄清楚这个功能目前我的代码是这个:
add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );
function change_woocommerce_order_number( $order_id ) {
$order = wc_get_order( $order_id );
$category = array();
if ( ! empty($order) ) {
foreach ( $order->get_items() as $item_id => $item ) {
$product_id = $item['product_id'];
$terms = get_the_terms ( $product_id, 'product_cat' );
$parent_id = $order->get_parent_id( $parent, 'product_id' );
if ( ! empty($terms) ) {
foreach ( $terms as $term ) {
$category[] = $term->term_id;
}
}
}
}
if ( $parent ) {
$order_id = 'P - '. $order_id;
} else {
if ( in_array( 23, $category ) ) {
$order_id = 'M - '. $order_id;
} else {
if ( in_array( 16, $category ) ) {
$order_id = 'C - '. $order_id;
}
}
return $order_id;
}
}
“M”和“C”完美地工作......只是父订单“P”没有,而不是“P”,我在父订单部分有似乎是随机的 M 或 C。我所有的订单都按类别划分,这仍然按预期工作(请参见图片)。我主要只需要附图左侧的“P”主父订单
Parent Order Prefix 'P' Location
提前致谢。
【问题讨论】:
-
$parent变量在$parent_id = $order->get_parent_id( $parent, 'product_id' );行中没有设置或初始化。或许问题就出在于此。 -
嗨 Vincenzo 非常感谢您的输入,呃...所以我在这方面是全新的,而且我上面使用的大多数代码都是从这个网站重用的,我将如何设置或初始化 $parent 对象。我觉得我必须像我对 $parent_id 设置所做的那样做,你已经提到但为 $parent 做类似的事情?
-
你应该解释一下逻辑。什么时候应该分配“P”前缀?编辑您的问题和enter all the minimum information necessary,让其他人了解并解决您的问题。
-
你使用插件吗? WooCommerce 默认不处理子订单。
-
您好 Vincenzo,感谢您的回复,我确实使用了一个插件,它被称为“Multi Order for WooCommerce Pro”
标签: wordpress woocommerce prefix