2016-06-10 14 views
0

Ich möchte die Kategorie der Artikel in den Warenkorb an der Kasse in WooCommerce bekommen. Ich möchte es extrahieren und es dann in ein Feld in meiner benutzerdefinierten Kasse legen.Wie man Kategorien von einer Bestellung an der Kasse in WooCommerce erhält?

Ich verwende WooCommerce MultiStep Checkout Wizard Premium-Plugin und ein specific hook:

add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep'); 

Ich bin ein wenig verloren und kann nicht viel documentation für das finden, was ich brauche, um es zu bekommen zu verwenden.

Ich versuche nur Objekte zu bekommen, aber ich bekomme nur ein leeres Array.

$order = new WC_Order($order_id); 
$items = $order->get_items(); 
var_dump($items); 

Antwort

1

Sie könnten versuchen, zuerst mit Ihrem Ansatz "new WC_Order($order_id);", auf diese Weise:

function destinationStep($order_id) 

    global $woocommerce; 

    $order = new WC_Order($order_id); 
    $items = $order->get_items(); 
    // echo var_dump($items); 

    //---- 
    foreach ($items as $key => $item) { 
     $product_name = $item['name']; 
     $product_id = $item['product_id']; 
     $terms = get_the_terms($product_id, 'product_cat'); 
     // echo var_dump($terms); 

     foreach ($terms as $term) { 
      // Categories by slug 
      $product_cat_slug= $term->slug; 
     } 
    } 

add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep', 10, 1); 

Wenn es immer noch nicht mit "new WC_Order($post->ID)" Ansatz versuchen funktioniert:

function destinationStep() 

    global $woocommerce, $post; 

    $order = new WC_Order($post->ID); 
    $items = $order->get_items(); 
    // echo var_dump($items); 

    //---- 
    foreach ($items as $key => $item) { 
     $product_name = $item['name']; 
     $product_id = $item['product_id']; 
     $terms = get_the_terms($product_id, 'product_cat'); 
     // echo var_dump($terms); 

     foreach ($terms as $term) { 
      // Categories by slug 
      $product_cat_slug= $term->slug; 
     } 
    } 

add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep'); 

aktualisieren - Nach einigem Nachdenken:

Sie können den Auftrag Id für ` 'post_type' get => 'shop_order', weil es noch nicht existiert. Diese Bestell-ID wird generiert, wenn der Kunde die Bestellung absendet, jedoch nicht vorher auf der Kassenseite.
In diesem Fall ist es normal, ein leeres Array zu erhalten.

+0

Hallo Entschuldigung für die späte Antwort, keine arbeiten für mich. Ich benutze nur das erste Bit des Codes am Anfang und versuche, den var dump zu bekommen. Beide Var-Dumps sind leere Arrays. Irgendein Rat? Ich werde dir Tequila kaufen, wenn wir das schaffen :) –

+0

Ja, ich habe das auch versucht. Nur der erste Teil ohne die Schleife. Nur ein leeres Array. –

+0

Gerade für die Unterstützung aufgewertet das ist, was ich an anderer Stelle gelesen habe, es funktioniert nicht nur für mich. –