【问题标题】:How to get the product sku from order items in Woocommerce [duplicate]如何从 Woocommerce 中的订单项中获取产品 sku [重复]
【发布时间】: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;

但不起作用。

【问题讨论】:

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

标签: php wordpress woocommerce orders woocommerce-rest-api


【解决方案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();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2020-12-09
  • 2019-11-20
  • 2021-08-13
  • 2014-02-03
相关资源
最近更新 更多