Estoy tratando de conseguir los elementos de línea de pedido.

Estoy haciendo esto:

$order = new WC_Order(147);
foreach ($order->get_items() as $key => $lineItem) {
    print_r('<pre>----');
    print_r($lineItem);
    print_r('----</pre>');
}

Puedo ver todos los datos que necesito, pero la matriz muestra esto:

[meta_data:protected] => Array

¿Cómo puedo acceder a esta matriz para obtener los valores?

Gracias.

  • Yo era capaz de acceder a ella con: $lineItem->get_meta_data()
InformationsquelleAutor bstras21 | 2017-04-24

2 Comentarios

  1. 22

    Desde WooCommerce 3.0+ Orden de los elementos no es nuevo Objeto de la clase WC_Order_Item_Product.

    Ahora el Orden de los elementos de propiedades, no se puede acceder directamente como antes

    Así que si usted mira a su salida de datos en bruto usted verá que cada elemento de línea es ahora un objeto, y usted será capaz de acceder a que los datos protegidos exclusivamente a través de:

    1. WC_Order_Item_Product métodos getters (o a cambiar con el incubadoras métodos)…
    2. WC_Order_Item get_formatted_meta_data( '', true ) método para tener acceso a todos los meta datos. Se da una matriz de objetos accesibles. Ver WC_Data método get_meta() para acceder a cada uno de los meta datos.
    3. WC_Data captadores métodos para quitar la protección de estos datos y el acceso a ella a través de matrices utilizando métodos:
      • get_data() (este método es muy útil)
      • get_meta() (este método es el más útil)
      • get_data_keys()
      • get_meta_data() (no desproteger a los datos, uso get_formatted_meta_data())
    4. wc_get_order_item_meta() función dedicada.

    La WC_Order_Item_Product métodos getters:

    //Get an instance of the WC_Order object
    $order = wc_get_order(147);
    
    //Iterating through each order item
    foreach ($order->get_items() as $item_id => $item ) {
        echo $item->get_type().'<br>'; //The order item type
        echo $item->get_product_id().'<br>'; //The Product ID
        echo $item->get_variation_id().'<br>'; //The variation ID
        echo $item->get_quantity().'<br>'; //Line item quantity
        echo $item->get_subtotal().'<br>'; //Line item subtotal
        echo $item->get_total().'<br>'; //Line item total
    
        //The associated product object (which properties can't be accessed directly too)
        echo '<pre>'; print_r( $item->get_product() ); echo '</pre>'; 
    
        //... and so on ...
    
        ## Testing raw output (protected)
        //echo '<pre>'; print_r($item); echo '</pre>';
    }

    La wc_get_order_item_meta() función. Aquí usted puede ir en wp_woocommerce_order_itemmeta tabla y salida de los datos para un ID de elemento mediante el correspondiente meta_key (para line_item tipo de datos ID de elemento):

    //Get an instance of the WC_Order object
    $order = wc_get_order(147);
    
    //Iterating through each order item
    foreach ($order->get_items() as $item_id => $item ) {
    
        echo wc_get_order_item_meta( $item_id, '_product_id', true). '<br>'; //Product ID
        echo wc_get_order_item_meta( $item_id, '_variation_id', true). '<br>'; //Variation ID
        echo wc_get_order_item_meta( $item_id, '_qty', true). '<br>'; //quantity
        echo wc_get_order_item_meta( $item_id, '_line_subtotal', true). '<br>'; //Line subtotal
    
        //... and so on ...
    
        ## Testing raw output (protected data)
        //echo '<pre>'; print_r($item); echo '</pre>';
    }

    La WC_Data método get_data() método (para desproteger los datos en una matriz):

    //Get an instance of the WC_Order object
    $order = wc_get_order(147);
    
    //Iterating through each order item
    foreach ($order->get_items() as $item_id => $item ) {
    
        //Get the most useful Item product data in an accessible array
        $item_data = $item->get_data();
    
        echo $item_data['id'].'<br>'; //The order item ID
        echo $item_data['order_id'].'<br>'; //The order ID
        echo $item_data['product_id'].'<br>'; //The Product ID
        echo $item_data['variation_id'].'<br>'; //The Variation ID
        echo $item_data['name'].'<br>'; //The Product title (name)
        echo $item_data['quantity'].'<br>'; //Line item quantity
        echo $item_data['subtotal'].'<br>'; //Line item subtotal
        echo $item_data['total'].'<br>'; //Line item total
    
        //... and so on ...

    La WC_Data método get_meta() método (para acceder a cada uno de los bienes por su meta clave):

    //Get an instance of the WC_Order object
    $order = wc_get_order(147);
    
    //Iterating through each order item
    foreach ($order->get_items() as $item_id => $item ) {
    
        echo $item->get_meta('_product_id').'<br>'; //The Product ID
        echo $item->get_meta('_variation_id').'<br>'; //The Variation ID
        echo $item->get_meta('_qty').'<br>'; //Line item quantity
        echo $item->get_meta('_line_subtotal').'<br>'; //Line item subtotal
        echo $item->get_meta('_line_subtotal_tax').'<br>'; //Line item subtotal tax
        echo $item->get_meta('_line_total').'<br>'; //Line item total
        echo $item->get_meta('_line_tax').'<br>'; //Line item total tax
    
        //Product attributes for variation
        echo $item->get_meta('pa_color').'<br>'; //Color
        echo $item->get_meta('pa_size').'<br>'; //Color
    
        //Custom item meta gata
        echo $item->get_meta('custom_meta_key').'<br>'; //custom meta key visible
        echo $item->get_meta('_custom_meta_key').'<br>'; //custom meta key not visible
    
    
        //... and so on ...

    Relacionados con: Cómo conseguir WooCommerce los detalles de la orden

    • Gracias. Este es el deseo fue más claro en la documentación.
  2. 2

    Para obtener los datos de [meta_data:protected] => Array deberá utilizar otro método.

    Sólo tiene que utilizar esta $item_obj->get_meta_data();

    Una forma más detallada para llegar a ellos, recorrer dos veces de la siguiente manera:

      $order = wc_get_order( $order_id );
      foreach ($order->get_items() as $item_id => $item_obj) {
    
             $kua = $item_obj->get_meta_data();
    
             foreach ($kua as $key => $value) {
                foreach ($value as $key2 => $value2) {
                   echo $key2.'->'.$value2.'<br>';
                }
            }
      }

    Colección de los métodos que se encuentra aquí

    • en wocommerce 3+ nada impresión

Dejar respuesta

Please enter your comment!
Please enter your name here