我正在构建一个具有不同功能的 WooCommerce 网上商店,我希望获得不同系列的订单号或发票号,与下面提到的链接完全相同。我需要一个类似的解决方案,但我尝试使用提供的两个代码,但每当我将代码添加到函数文件中时,结帐页面就会停止工作并给出错误“此网站上存在严重错误”
我尝试过的代码:
第一次尝试
add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );
function change_woocommerce_order_number( $order_id ) {
$order = new WC_Order( $order_id );
foreach ( $order->get_items() as $item_key => $item )
$product = $order->get_product_from_item( $item );
$sku = $product->get_sku();
$new_order_id = $sku . $order_id;
return $new_order_id;
}
第二次尝试:
function change_woocommerce_order_number($order_id) {
$order = new WC_Order($order_id);
$items = $order->get_items();
$first_item = $items[0];
$product_id = $first_item->get_product_id();
$product = new WC_Product($product_id);
$sku = $product->get_sku();
return $sku.$order_id;
}
add_filter('woocommerce_order_number', 'change_woocommerce_order_number');
我在自定义代码方面完全是新手,因此非常感谢您的及时帮助。
您的代码尝试中存在一些错误,并且由于一个订单可以有多个产品,因此您需要从第一个订单项(产品)获取 SKU,将其添加到订单号之前。
尝试以下方法:
add_filter( 'woocommerce_order_number', 'custom_wc_order_number', 10, 2 );
function custom_wc_order_number( $order_id, $order ) {
$item = current( $order->get_items() ); // Get the first order item
$product = $item->get_product(); // Get the WC_Product Object
$sku = $product->get_sku(); // Get the SKU from the product
if ( $sku ) {
return $sku . $order_id; // Prepend the sku to the order number
}
return $order_id;
}
应该可以。