在我开始使用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>
)
是什么导致使用哪个密钥存储数据的不一致?
检索数据的最可靠(未来的)方法是什么?
答案 0 :(得分:0)
这种不一致是可能的。但它的数据输入不一致。向Products&gt;&gt;添加属性时属性,它们成为woocommerce系统的一部分。然后,只需在产品详细信息页面上选择,即可将它们映射到变体。
但是,当您直接从产品详细信息页面添加“自定义属性”时,该数据将特定于该产品并可能导致不一致。