在我開始使用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,日期,艙位等級,日期,不是兩個)。那可能嗎?
下面是購買兩種不同產品的訂單元數據轉儲的樣子。這個使用pa_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>
)
什麼原因導致該鍵用於存儲數據的不一致性:
[467] => stdClass Object
(
[key] => pa_class-date
[value] => 2017-09-01
[display_key] => Class Date
[display_value] => <p>2017-09-01</p>
)
但對於不同的產品,使用的關鍵「級最新的」存儲的數據?
什麼是檢索數據最可靠的方法?
請注意'$ order-> get_items();'現在返回並返回'$ item' * object *的數組,您應該開始使用getter方法來代替像數組一樣訪問它。 – helgatheviking