WooCommerce-Produktvariante über die REST-API anlegen

Wie das Hinzufügen eines Produktes mit der REST-API ist auch das Anlegen einer oder mehrerer Varianten relativ schnell gemacht – ich nutze dafür wie in meinem letztwöchigen Beitrag die PHP-Bibliothek.

Voraussetzungen für das Anlegen einer Variante

Damit das Erstellen einer Produktvariante wie gewünscht funktioniert, müssen die entsprechenden Produkt-Eigenschaften bereits für das Produkt hinterlegt sein. Das kann beim Anlegen eines Produkts (das ich im Beitrag von letzter Woche beschrieben habe) zum Beispiel so aussehen:

$prod_data = [ 'name' => 'Ein tolles Produkt', 'type' => 'variable', 'description' => 'Eine sehr vielsagende Produkt-Beschreibung.', 'images' => [ [ 'src' => 'https://shop.local/pfad/zum/bild.jpg', 'position' => 0, ], ], 'categories' => [ [ 'id' => 1, ], ], 'attributes' => [ [ 'id' => 5, 'variation' => true, 'visible' => true, 'options' => [ 'S', 'M', 'L' ], ], ], ]; $product = $this->woocommerce->post( 'products', $prod_data );
Code-Sprache: PHP (php)

Für attributes geben wir ein Array der Eigenschaften an (im Beispiel nur die Größe) und können für jede Eigenschaft über variation festlegen, ob sie für Varianten nutzbar sein soll. Mit options geben wir die Optionen an, die für Varianten genutzt werden können. Diese Optionen sind die Namen von Eigenschaften-Termen, die wie die Eigenschaft selbst auch vorher angelegt sein müssen.

Daneben geben wir hier – anders als im Beitrag letzter Woche – als type den Wert variable an, um ein variables Produkt zu erstellen.

Produktvariante mit der REST-API erstellen

Wenn diese Voraussetzungen an das Produkt erfüllt sind, können wir mit dem folgenden Code eine Variante des Produkts erstellen:

$variation_data = [ 'regular_price' => '15.00', 'image' => [ 'src' => 'https://shop.local/pfad/zum/bild_groesse_l.jpg', ], 'attributes' => [ [ 'id' => 5, 'option' => 'L', ], ], ]; $this->woocommerce->post( "products/$product->id/variations", $variation_data );
Code-Sprache: PHP (php)

Wir geben den Preis, ein Bild und die Größe an. Für das Festlegen der Größe übergeben wir in einem Array innerhalb von attributes die ID der Eigenschaft sowie die Option. Als Endpunkt nutzen wir products/$product->id/variations – die Produkt-ID können wir hier über $product->id ermitteln, da wir beim Anlegen des Produktes den Aufruf des products-Endpunkts in $product gespeichert haben.

Und das sollte es schon gewesen sein: jetzt müssten wir ein variables Produkt mit einer Variante erstellt haben.

2 Reaktionen zu »WooCommerce-Produktvariante über die REST-API anlegen«

  1. Hallo Florian,
    vielen Dank für deinen Blog Beitrag.
    Kannst du mir sagen, wo die "$variation_data[attributes => id]" herkommt?
    Hast du bei $prod_data[attributes => id] eine ID frei gesetzt und übernimmst sie auch im zweiten Step?

    Mein Problem ist, dass die Attribute im Frontend angezeigt werden, aber diese immer den gleichen Preis haben.
    Erst wenn ich sie im Backend fix einer Variante zuordne, dann klappt es. Aber das macht natürlich keinen Spaß / Sinn, wenn ich die API nutze.

    Meine weitere Variante füge ich via API Schnittstelle, mit dem gleichen Request hinzu: $this->woocommerce->post( "products/$product->id/variations", $variation_data );

    Hast du vielleicht einen Tipp für mich?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert