php - Obtenga artículos de pedido y WC_Order_Item_Product en WooCommerce 3
wordpress orders (2)
Ok, leyendo sobre los cambios en WooCommerce 3.0+, parece que ya no puede acceder a esta clase directamente, por lo que supongo que este código debe cambiarse, ya que está generando un error:
$order_item_id = 15;
$order_item = new WC_Order_Item_Product($order_item_id);
$return = $order_item->get_id() ? $order_item : false;
Pero, vergonzosamente, no estoy seguro de cómo cambiar este código para usar las nuevas funciones correctas getter y setter en la versión más nueva de esta clase, que ya no tiene una construcción.
¿Cómo hacer esto correctamente?
No veo ninguna función
get
para obtener el artículo de pedido de la misma manera que la anterior.
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html
Tal vez estoy pasando por alto algo aquí?
Si usa el método
get_id()
, obtiene su ID de artículo, que es15
en su código.
Obtenga la identificación del producto:
El método correcto de WC_Order_Item_Product para obtener la identificación del producto es:
get_product_id()
Obtenga la ID de variación
:
El método correcto de WC_Order_Item_Product para obtener la identificación del producto es:
get_variation_id()
Obtenga la identificación del pedido
El método correcto de WC_Order_Item_Product para obtener el Id. De pedido es:
get_order_id()
Obtener el objeto WC_Product
El método correcto de WC_Order_Item_Product para obtener el objeto WC_Product es:
get_product()
Obtener el objeto WC_Order
El método correcto de WC_Order_Item_Product para obtener el objeto WC_order es:
get_order()
Obtenga y desproteja los datos y metadatos
utilizando métodos
WC_Data
:
get_data()
get_meta_data()
Obtenga el objeto
WC_Product
del ID del artículo de pedido:
$order_item_id = 15;
$item = new WC_Order_Item_Product($order_item_id);
// The product ID
$product_id = $item->get_product_id();
// The variation ID
$product_id = $item->get_variation_id();
// The WC_Product object
$product = $item->get_product();
// The quantity
$order_id = $item->get_quantity();
// The order ID
$order_id = $item->get_order_id();
// The WC_Order object
$order = $item->get_order();
// The item ID
$item_id = $item->get_id(); // which is your $order_item_id
// The product name
$product_name = $item->get_name(); // … OR: $product->get_name();
//Get the product SKU (using WC_Product method)
$sku = $product->get_sku();
Obtenga los artículos de
WC_Order
objeto
WC_Order
(y use el
objeto
WC_product
)
:
$order_id = 156; // The order_id
// get an instance of the WC_Order object
$order = wc_get_order( $order_id );
// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){
//Get the product ID
$product_id = $item->get_product_id();
//Get the variation ID
$product_id = $item->get_variation_id();
//Get the WC_Product object
$product = $item->get_product();
// The quantity
$product_name = $item->get_quantity();
// The product name
$product_name = $item->get_name(); // … OR: $product->get_name();
//Get the product SKU (using WC_Product method)
$sku = $product->get_sku();
}
Acceso y desprotección de datos de
WC_Order_Item_Product
:
Puede usar todos
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html
métodos de
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html
o puede desproteger los datos usando los siguientes métodos de
WC_Data
:
$order_id = 156; // The order_id
// get an instance of the WC_Order object
$order = wc_get_order( $order_id );
// The loop to get the order items which are WC_Order_Item_Product objects since WC 3+
foreach( $order->get_items() as $item_id => $item ){
// Get the common data in an array:
$item_product_data_array = $item->get_data();
// Get the special meta data in an array:
$item_product_meta_data_array = $item->get_meta_data();
// Get the specific meta data from a meta_key:
$meta_value = $item->get_meta( ''custom_meta_key'', true );
// Get all additional meta data (formatted in an unprotected array)
$formatted_meta_data = $item->get_formatted_meta_data( '' '', true );
}
Como referencia:
WC_Order_Item_Product hereda de WC_Order_Item, que tiene get_order_id (), por lo que puede obtener el ID de pedido con
$order_item->get_order_id();