私がWooCommerceバージョン2で始まったサイトで。にアップグレードして、新しいリリース(3.0.0,3.0.1、... 3.0.4)でアップグレードしたところ、製品属性の注文アイテムメタデータの格納方法に矛盾があることに気付きました。商品属性データを確実に取得するにはどうすればよいですか?
バリエーションに属性「クラス日付」を使用すると、ストア内の一部の製品の注文が行われると、クラス日付のメタデータがキー「pa_class-date」を使用して格納されます。しかし、他の製品では、同じ属性のデータがキー "class-date"を使用して格納されます。
属性データを取得するための私のコードは次のようになります。私は両方ではなく、ただ一つのキーまたは他の(pa_class-日付またはクラス日付で見て、これを簡素化できるようにしたいと思い
$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");
}
)。それは可能ですか?
ここでは、2つの異なる製品を購入した場合の注文メタデータのダンプを示します。これは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>
)
しかし、別の製品のために、データがキー「クラス日付」を使用して保存された:
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>
)
キーは、データを格納するために使用されている矛盾の原因は何?
データを取得する最も信頼性の高い(将来的に)方法は何ですか?
'$ order-> get_items();'は '$ item' * object *の配列を返すようになりました。配列のようにアクセスする代わりに、getterメソッドを使い始めるべきです。 – helgatheviking