Since 3.0, WC_Order properties are protected and need the getter/setter methods: use $order-&gt;get_id(), $order-&gt;get_status(), $order-&gt;get_total() and friends instead of $order-&gt;id style access. Order line items moved to the new classes WC_Order_Item, WC_Order_Item_Product, and WC_Order_Item_Shipping, so iterate $order-&gt;get_items() and read each item with its getters.

Context: Stack Overflow question (score 144): after the WooCommerce 3.0 update, direct property access on WC_Order objects throws errors, so the old way of reading order details breaks.