当前位置: 首页 > 知识库问答 >
问题:

从WooCommerce中的订单项获取变异属性

柯曜文
2023-03-14

我试图获得变量product属性的名称,在购物车中,但有些东西不对。我不明白当一个对象被保护时,我怎么能得到变异值

foreach ( $order->get_items() as $item_id => $item ) {
 
     $product_id = $item->get_product_id();
      $product = $item->get_product();
      
$accomodation = $product['variation']['attribute_pa_hebergement']; // does not work

}

这是$product中对象reurns的一部分

WC_Product_Variation Object
(
   [post_type:protected] => product_variation
   [parent_data:protected] => Array
       (
           [title] => test
           [status] => publish
           [sku] => 
      
           [tax_class] => 
           [shipping_class_id] => 0
           
       )

   [object_type:protected] => product
   [cache_group:protected] => products
   [data:protected] => Array
       (
           [name] => test
           [slug] => test-14
         
          ...
           [attributes] => Array
               (
                   [pa_hebergement] => chambre-double-140e
                   [pa_parking] => 1-place-35e
                   [pa_tarifs] => tarif-jeune
               )

           [default_attributes] => Array
               (
               )

共有1个答案

卢晟
2023-03-14

相反,请尝试使用wc_product方法get_attributes()如下所示:

// Loop through order items
foreach ( $order->get_items() as $item_id => $item ) {
    // Target product variations
    if ( $item->get_variation_id() ) {
        $product = $item->get_product(); // Get the product Object
        
        // Loop through product attributes
        foreach ( $product->get_attributes() as $attribute => $value ) {
            // Get attribute label name
            $label = wc_attribute_label($attribute);
            
            // Get attribute name value
            $name = term_exists( $value, $attribute ) ? get_term_by( 'slug', $value, $attribute )->name : $value;
            
            // Display
            echo '<p><strong>' . $label . '</strong>: ' . $name . '</p>';
        }
    }
}

应该管用。

 类似资料:
  • 问题内容: 如何列出基于特定产品变型的订单商品? 给定一个 变体ID ,我想生成一个包含该特定变体的所有 订单商品 的列表。 就我而言,我使用变体表示日期,并且产品本身是重复发生的事件,因此,此操作的目的是列出参加该特定日期的人员。 如果可以通过简单的用法(例如使用)或类似的方法来完成此操作,那将是令人惊讶的,但是否则我猜想自定义查询将是这种方式。 我只是似乎无法弄清楚在这种情况下表格是如何关联的

  • 在woocommerce my-account中,我想显示与一个变体属性相关的所有销售。在我的例子中,属性是艺人名称。我想显示与艺术家相关的每个产品的每个订单的尺寸/数量和买家名称。如果size为空,我想检索包含我添加的size的variation_sku。 我开始使用这个函数从Woocommerce中的产品ID获取所有订单ID 结果是相当好的90%的情况下,除了一些订单。“variation_i

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

  • 问题内容: 好的,继续阅读WooCommerce 3.0+中的更改,似乎您无法再直接访问此类,因此我认为需要更改此代码,因为它会吐出一个错误: 但是,令人尴尬的是,我不确定如何更改此代码以在此类的最新版本中使用正确的新getter和setter函数,而该版本不再具有构造。如何正确执行此操作?我没有看到与上述相同的获取订单项的功能。 也许我在这里忽略了什么? 问题答案: 如果使用该 方法,则将获得

  • 我将从我的WoocCommerce商店定制感谢页面。为此,我加了一句布兰科谢谢。php进入WooCommerce签出目录。 我试过这个密码 但是变量$order\u id为空。 有人知道我是如何在感谢页面上获得订单标识的吗?

  • 问题内容: 在WooCommerce中,从以下代码行: 如何从订单ID获取WooCommerce订单详细信息? 问题答案: 3.0版以上的WOOCOMMERCE订单 自Woocommerce大型主要更新3.0+以来,事情已经发生了很多变化: 对于 对象,无法像以前一样直接访问属性,并且会引发一些错误。 现在,对象实例需要使用new 以及 getter和setter方法。 此外,还有一些用于订购商品