php - WooCommerce get_sku();产品变化顺序

标签 php wordpress woocommerce

我正在为 Woocommerce 构建一个自定义函数,我需要在其中获取产品 SKU,如果“变体”产品获得变体特定的 SKU。

我目前拥有的是:

// Query order data
$order = new WC_Order($order_id);
$items = $order->get_items();

// Output the loop
foreach ($order->get_items() as $item) {
    // Getting some information
    $product_name = $item['name'];
    $product_id = $item['product_id'];
    $product_qty = $item['qty'];
    $product_variation_id = $item['variation_id'];
    $product = new WC_Product($item['product_id']);
    // SKU
    $SKU = $product->get_sku();

它工作得很好,除非涉及到变化,我花了很多时间试图弄清楚这个问题并找到一个好的答案但没有成功。

我开始明白我应该使用这样的东西:

$available_variations = $product->get_available_variations();

疯狂的是我确实有这个工作,但我没有提交 Git,因此我无法恢复正确的代码。我发现的所有示例几乎都包含大量代码,但我确信这可以使用更简单、性能更好的方法来完成。

最佳答案

谈论隧道视野..

 $product_variation_id = $item['variation_id'];
 $product = new WC_Product($item['product_id']);

解决方案是将“product_id”切换为我已经存在的“variation_id”

$product = new WC_Product($item['variation_id']);

瞧,问题解决了!

工作示例 为了在 $sku 上获得预期的输出,我确实选择了这个解决方案

// Get order data
$order = new WC_Order($order_id);
$items = $order->get_items();

// Loop through ordered items
foreach ($items as $item) {
  $product_name = $item['name'];
  $product_id = $item['product_id'];
  $product_qty = $item['qty'];
  $product_variation_id = $item['variation_id'];

  // Check if product has variation.
  if ($product_variation_id) { 
    $product = new WC_Product($item['variation_id']);
  } else {
    $product = new WC_Product($item['product_id']);
  }

  // Get SKU
  $sku = $product->get_sku();
}

关于php - WooCommerce get_sku();产品变化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662963/

相关文章:

php - $wpdb->insert 没有重新分配唯一字段

php - 在 Woocommerce 中的简短描述后移动产品描述

php - 在 Woocommerce 的订单支付页面上询问并保存账单信息

php - 无法从 phpmyadmin 回显数据

php - 将数组传递给 mysql

mysql - 如何使用用户输入的名称创建MYSQL数据库

WordPress 自定义分类法 - 如果不是父术语

ajax - 使用 AJAX 过滤 WooCommerce 产品

php - 获取推荐人 ID

php - excel导入时如何返回变量