Erhalten Sie Produkt-ID und Varianten-ID von einer Bestell-ID von außerhalb von WordPress

Lesezeit: 2 Minuten

Benutzer-Avatar
Karem Connor

Ich versuche, WooCommerce mit PHP/MYSQL abzufragen Produkt-ID/Varianten-ID aus Auftragsnummer

  • Wenn das/die Produkt(e) in der Bestellung einfach ist/sind, erhalten Sie die Produkt-ID(s)

  • Wenn das/die Produkt(e) in der Bestellung variabel ist/sind, erhalten Sie die Variations-ID(s)

  • Wenn beide (einfach und variabel) beide erhalten (Produkt-ID(s) und Variations-ID(s))

HINWEIS: Das Skript, das ich codiere, ist unabhängig von WordPress.

Unter Verwendung verschiedener Aspekte der WooCommerce-API kann dies mit einer Version des Folgenden erreicht werden.

$order_id = XXX;

$order = wc_get_order( $order_id ); //returns WC_Order if valid order 
$items = $order->get_items();   //returns an array of WC_Order_item or a child class (i.e. WC_Order_Item_Product)

foreach( $items as $item ) {

    //returns the type (i.e. variable or simple)
    $type = $item->get_type();

    //the product id, always, no matter what type of product
    $product_id = $item->get_product_id();

    //a default
    $variation_id = false;

    //check if this is a variation using is_type
    if( $item->is_type('variable') ) {
        $variation_id = $item->get_variation_id();
    }

    //more code
}

Beachten Sie die Dokumentation,

wc_get_order();

WC_Order();

WC_Order_Item();

WC_Order_Item_Product();

  • Vorsicht, ich fürchte $item->get_type() wird nicht zurückkehren Variable oder einfach aber line_item

    – Pablo SG Pacheco

    15. März 2021 um 1:18 Uhr

  • Ich wünschte, ich hätte den Kommentar von @PabloSGPacheco früher gesehen. is_type gibt tatsächlich ‘line_item’ zurück und erweist sich als nicht hilfreich. Es ist wahrscheinlich am besten, einfach zu verwenden $product_id = $item->get_product_id() und $product_variation_id = $item->get_variation_id().

    – Eric K

    18. März 2021 um 15:31 Uhr

  • @ericK Ich bin froh, dass mein Kommentar nützlich war. Genau, wenn ich mich nicht irre, wenn Sie nachsehen $item->get_variation_id() bei einem Artikel, der kein variables Produkt ist, erhalten Sie null. Vielleicht ist dies tatsächlich ein zuverlässigerer Ansatz

    – Pablo SG Pacheco

    19. März 2021 um 13:11 Uhr

  • Wenn Sie möchten, dass die Produkt-ID einfach ist und die Variations-ID, wenn es sich um eine Variation handelt, können Sie Folgendes verwenden: $pid = $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id();

    – TASan

    26. November 2021 um 10:12 Uhr

  • Ich habe diese Antwort für Mod-Eingriffe markiert, da sie in der Tat völlig falsch ist. get_type kann nicht verwendet werden, um den Produkttyp zu ermitteln, da es immer “line_item” zurückgibt.

    – Hybride Webentwicklung

    15. März um 4:40 Uhr

Wie Sie in Anmerkung “Das Skript, das ich codiere, kodiere, ist unabhängig von WordPress” erwähnt haben.
Dann gibt es eine Abfrage, die Sie verwenden können

So erhalten Sie eine Liste der Variations-ID von der Produkt-ID.
ID AUSWÄHLEN AUS wp_posts WO post_parent = “PRODUKT_ID” UND post_type WIE ‘product_variation’

1310880cookie-checkErhalten Sie Produkt-ID und Varianten-ID von einer Bestell-ID von außerhalb von WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy