当前位置: 首页 > 面试题库 >

在WooCommerce 3中获取订单商品和WC_Order_Item_Product

单于旭东
2023-03-14
问题内容

好的,继续阅读WooCommerce 3.0+中的更改,似乎您无法再直接访问此类,因此我认为需要更改此代码,因为它会吐出一个错误:

$order_item_id = 15;
$order_item = new WC_Order_Item_Product($order_item_id);
$return = $order_item->get_id() ? $order_item : false;

但是,令人尴尬的是,我不确定如何更改此代码以在此类的最新版本中使用正确的新getter和setter函数,而该版本不再具有构造。如何正确执行此操作?我没有看到get与上述相同的获取订单项的功能

也许我在这里忽略了什么?


问题答案:

如果使用该 get_id() 方法,则将获得 15 代码中的商品ID 。

获取产品ID:获取产品ID
的正确WC_Order_Item_Product方法为: get_product_id()

获取版本ID
获取产品 ID 的正确WC_Order_Item_Product方法为: get_variation_id()

获取订单ID
正确的WC_Order_Item_Product方法以获取订单ID为: get_order_id()

获取WC_Product对象要获取WC_Product对象
的正确WC_Order_Item_Product方法是: get_product()

获取WC_Order对象要获取WC_order对象
的正确WC_Order_Item_Product方法是: get_order()

*使用以下 WC_Data 方法 *获取和取消保护数据和元数据
get_data()
get_meta_data()

WC_Product 从订单商品ID 获取对象:

$order_item_id = 15;
$item = new WC_Order_Item_Product($order_item_id);

// The product ID
$product_id = $item->get_product_id();

// The variation ID
$product_id = $item->get_variation_id();

// The WC_Product object
$product = $item->get_product();

// The quantity
$order_id = $item->get_quantity();

// The order ID
$order_id = $item->get_order_id();

// The WC_Order object
$order = $item->get_order();

// The item ID
$item_id = $item->get_id(); // which is your $order_item_id

// The product name
$product_name = $item->get_name(); // … OR: $product->get_name();

// Get the product SKU (using WC_Product method)
$sku = $product->get_sku();

// Get line item totals (non discounted)
$total     = $item->get_subtotal(); // Total without tax (non discounted)
$total_tax = $item->get_subtotal_tax(); // Total tax (non discounted)

// Get line item totals (discounted when a coupon is applied)
$total     = $item->get_total(); // Total without tax (discounted)
$total_tax = $item->get_total_tax(); // Total tax (discounted)

WC_Order对象获取订单商品 (并使用 WC_product Object)

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){
    //Get the product ID
    $product_id = $item->get_product_id();

    //Get the variation ID
    $product_id = $item->get_variation_id();

    //Get the WC_Product object
    $product = $item->get_product();

    // The quantity
    $product_name = $item->get_quantity();

    // The product name
    $product_name = $item->get_name(); // … OR: $product->get_name();

    //Get the product SKU (using WC_Product method)
    $sku = $product->get_sku();

    // Get line item totals (non discounted)
    $total     = $item->get_subtotal(); // Total without tax (non discounted)
    $total_tax = $item->get_subtotal_tax(); // Total tax (non discounted)

    // Get line item totals (discounted when a coupon is applied)
    $total     = $item->get_total(); // Total without tax (discounted)
    $total_tax = $item->get_total_tax(); // Total tax (discounted)
}

访问数据和自定义元数据:

1) 取消保护WC_Order_Item_Product数据和自定义元数据:

您可以使用所有 WC_Order_Item_Product data 方法,也可以使用
WC_Data
以下方法取消保护数据:

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){

    // Get the common data in an array: 
    $item_product_data_array = $item->get_data();

    // Get the special meta data in an array: 
    $item_product_meta_data_array = $item->get_meta_data();

    // Get the specific meta data from a meta_key: 
    $meta_value = $item->get_meta( 'custom_meta_key', true );

    // Get all additional meta data (formatted in an unprotected array)
    $formatted_meta_data = $item->get_formatted_meta_data( ' ', true );


    // Get line item totals (non discounted)
    $total     = $item->get_subtotal(); // Total without tax (non discounted)
    $total_tax = $item->get_subtotal_tax(); // Total tax (non discounted)

    // Get line item totals (discounted when a coupon is applied)
    $total     = $item->get_total(); // Total without tax (discounted)
    $total_tax = $item->get_total_tax(); // Total tax (discounted)
}

2)仍然可以 使用数组访问 (为了与旧数组向后兼容) 以直接获取公共数据:

$order_id = 156; // The order_id

// get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){


    $product_id    = $item['product_id']; // Get the product ID
    $variation_id  = $item['variation_id']; // Get the variation ID

    $product_name  = $item['name']; // The product name
    $item_qty      = $item['quantity']; // The quantity

    // Get line item totals (non discounted)
    $line_total     = $item['subtotal']; // or $item['line_subtotal'] -- The line item non discounted total
    $line_total_tax = $item['subtotal_tax']; // or $item['line_subtotal_tax'] -- The line item non discounted tax total

    // Get line item totals (discounted)
    $line_total2     = $item['total']; // or $item['line_total'] -- The line item non discounted total
    $line_total_tax2 = $item['total_tax']; // The line item non discounted tax total

    // And so on ……
}


 类似资料:
  • 我试图创建一个IF条件与product_id从order_id,当一个新的订单被放置。 我试着这样做: 但是每次当我想下订单时,WooCommerce都会给我错误消息“内部服务器错误”。 我试图使用这个答案的代码,但不知何故它不起作用:如何获得WooCommerce订单详细信息 什么东西在这里不起作用?非常感谢你的帮助。 顺致敬意, 托马斯

  • 是否可能只得到最新的产品的木商订单?我知道笔记作为例子是可能的: 我能为订单中的产品做些类似的吗?

  • 在WooCommerce中,我启用了完美品牌WooCommerce插件来显示产品品牌。我希望品牌出现在整个周期(单个产品页面,购物车,结账,迷你购物车,订单和电子邮件)的产品名称之前。 我能够在购物车和结帐页面中的产品名称之前显示相关品牌,使用“将Woocommerce品牌名称添加到购物车项目产品名称”回答代码稍微更改(使用插件自定义分类法): 但我不知道如何在订单和电子邮件通知中实现这一点。

  • 从以下行代码输入: 如何从订单id获取WooCommerce订单详细信息?

  • 说明 用于获取商品列表 请求地址 http://api.dc78.cn/Api/mall_list_commodity 请求方式 GET 请求参数 GET参数 描述 size=30,一次分页的数量,默认30 page=1,获取分页的页码 POST数据 描述 无 返回 { "data": { "count": "6", "size": "2", "pages": "3", "page": "1",

  • 作为促销方式的一种,满减优惠让利小,效果好,既能让商家赚更多钱,又能让消费者更满意。而且,相较于打折,不会让品牌产生廉价感。现在,你可以用金数据全新推出的「订单满减」应用设置满减优惠,可灵活设置「阶梯满减规则」,刺激买家「主动凑单」,拍下商品「自动改价」,有效提高客单价。 如何配置订单满减 你需要先准备好相关表单,并且配置好微信支付。接下来,从应用中心进入「订单满减」,你就可以为这个表单设置满减活