如何从 Woocommerce 中的订单商品获取产品 sku

Але*_*ова 6 php wordpress orders woocommerce woocommerce-rest-api

对于页面“woocommerce_thankyou”上的 Api 需要获取 sku。我有:

$order = wc_get_order( $order_id ); 
foreach ($order->get_items() as $item_key => $item_values):
   $product = new WC_Product($item_id);
   $item_sku[] = $product->get_sku();
endforeach;
Run Code Online (Sandbox Code Playgroud)

但行不通。

Bjo*_*orn 8

我认为您正在实际的模板页面上摆弄;-) 在 Wordpress 中,我们主要使用操作挂钩来完成这样的任务。

试试这个,将其放在(子)主题中functions.php

注意:仅适用于 WooCommerce 3+

add_action( 'woocommerce_thankyou', 'order_created_get_skus', 10 );

function order_created_get_skus($order_id){

  $item_sku = array();
  $order = wc_get_order( $order_id ); 

  foreach ($order->get_items() as $item) {
    $product = wc_get_product($item->get_product_id());
    $item_sku[] = $product->get_sku();
  }

  // now do something with the sku array 

}
Run Code Online (Sandbox Code Playgroud)

问候,比约恩

  • 需要补充一点的是,如果在创建订单后删除了有问题的产品,这将会失败,因为 $product 将返回 false 并且 get_sku 会抛出致命错误。稍微简单一点的方法是: $item->get_product()->get_sku(); (6认同)