如何可靠地检索产品属性数据?

时间:2017-04-26 16:43:56

标签: woocommerce

在我开始使用WooCommerce版本2 然后通过较新版本(3.0.0,3.0.1,... 3.0.4)进行升级的网站上,我注意到了对于产品属性存储订单商品元数据的方式不一致。

对变体使用属性“类日期”时,如果为商店中的某些产品下订单,则使用密钥“pa_class-date”存储类日期的元数据。但对于其他产品,使用密钥“class-date”存储该相同属性的数据。

我获取属性数据的代码如下所示:

$items = $order->get_items();
if ( isset($item['item_meta']['class-date']) ) {
    $class_date = $item['item_meta']['class-date'];
} elseif ( isset($item['item_meta']['pa_class-date']) ) {
    $class_date    = $item['item_meta']['pa_class-date'];
} else {
    error_log("Missing class date. We tried pa_class-date and class-date, but both are empty");
}

我希望能够将其简化为只查看一个键或另一个键(pa_class-date或class-date,而不是两者)。这可能吗?

以下是购买两种不同产品的订单元数据的转储。这个使用pa_class-date。

[467] => stdClass Object
    (   
        [key] => pa_class-date
        [value] => 2017-09-01
        [display_key] => Class Date
        [display_value] => <p>2017-09-01</p>

    )

但对于其他产品,使用密钥“class-date”存储的数据:

26-Apr-2017 16:26:06 UTC] Array
(
    [480] => stdClass Object
        (
            [key] => class-date
            [value] => 2017-05-18
            [display_key] => Class Date
            [display_value] => <p>2017-05-18</p>

        )

是什么导致使用哪个密钥存储数据的不一致?

检索数据的最可靠(未来的)方法是什么?

1 个答案:

答案 0 :(得分:0)

这种不一致是可能的。但它的数据输入不一致。向Products&gt;&gt;添加属性时属性,它们成为woocommerce系统的一部分。然后,只需在产品详细信息页面上选择,即可将它们映射到变体。

但是,当您直接从产品详细信息页面添加“自定义属性”时,该数据将特定于该产品并可能导致不一致。