如何从 Woocommerce 中的订单项中获取产品 sku [重复]

Posted

技术标签:

【中文标题】如何从 Woocommerce 中的订单项中获取产品 sku [重复]【英文标题】:How to get the product sku from order items in Woocommerce [duplicate] 【发布时间】:2018-11-19 15:42:48 【问题描述】:

对于“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;

但不起作用。

【问题讨论】:

什么不完全有效?您看到的行为/错误消息是什么? 没有错误,但由于某种原因该变量没有显示在页面上。 【参考方案1】:

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

试试这个,把它放在(子)主题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 


问候,比约恩

【讨论】:

谢谢!看来new WC_Product($item_id) 行已过时。 link。我正在尝试以这种方式检查这个变量的页面 - print_r( $item_sku ); 是的,很抱歉,我的代码不正确。我已经用 WOO 3+ 的正确功能更新了我的答案 我检查了代码是否正常工作。非常感谢! 要添加一个注释,如果在创建订单后删除了有问题的产品,这将失败,因为 $product 将返回 false 并且 get_sku 会抛出一个致命错误。更简单的方法:$item->get_product()->get_sku();

以上是关于如何从 Woocommerce 中的订单项中获取产品 sku [重复]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更新 WooCommerce 订阅订单行项目

在 woocommerce 3 中获取订单项的元数据

带有 WooCommerce 扩展的 WP Webhooks Pro 不发送订单项

如何从functions.php中的简码挂钩中排除产品类别ID - WooCommerce

获取产品变体描述以显示在 woocommerce 中的订单项目上?

在 WooCommerce 电子邮件通知中更改订单项元数据