WPML Multilingual & Multicurrency for WooCommerce ist mit der WordPress REST API kompatibel. Über die REST API können Sie nun übersetzte WooCommerce-Inhalte erstellen, lesen, aktualisieren und löschen.
Dieses Dokument richtet sich an Entwickler, die diese Funktionen nutzen und eine mehrsprachige WooCommerce-Erfahrung in ihren Plugins, Websites und Anwendungen anbieten möchten.
Voraussetzungen
Um die REST API mit WPML Multilingual & Multicurrency for WooCommerce zu verwenden, benötigen Sie Folgendes:
- WordPress 4.7+
- WooCommerce 3.9.0+
- WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
- WooCommerce REST PHP-Client-Bibliothek
- Sprechende Permalinks, festgelegt auf der Seite Einstellungen → Permalinks.
Einrichten der Client-Bibliothek
Wie bereits erwähnt, benötigen Sie die WooCommerce REST PHP-Client-Bibliothek. Diese Bibliothek ist ein PHP-Wrapper, der die Interaktion mit der WooCommerce REST API auf einfachere Weise ermöglicht. Sie können auch andere Client-Bibliotheken verwenden.
Das Einrichten der Bibliothek in Ihrer Anwendung umfasst einige Schritte:
-
- Laden Sie die Bibliotheksdateien mit dem folgenden Composer-Befehl auf den Server Ihrer Website herunter:
composer require automattic/woocommerce
-
- Binden Sie die Autoloading-Datei der Bibliothek, autoload.php, zu Beginn Ihres PHP-Codes mithilfe der Funktion require ein.
WCML REST API – Einbinden der Autoloading-Datei
require __DIR__ . '/vendor/autoload.php'; use Automattic\WooCommerce\Client; $woocommerce = new Client( 'http://example.com', 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', [ 'wp_api' => true, 'version' => 'wc/v3', ] );
'ck_61f94473aab0445da506e095e664f5d65b153f45'; 'cs_7e60f84b6c87554d249b1ad797d6201566c1009e';
- Konfigurieren Sie die Optionen für die Verwendung der Bibliothek. Sie finden die Beschreibung aller Optionen auf der offiziellen Seite.
Verwendung der REST API
Nachdem Sie die Bibliothek in Ihrem PHP-Code eingerichtet haben, können Sie mit der Entwicklung verschiedener Aktionen beginnen, die Ihr Code ausführen soll. Die folgende Liste enthält alle Hauptaktionen, die Sie mit der REST API und WPML Multilingual & Multicurrency for WooCommerce ausführen können.
Bestellungen anzeigen
Indem Sie der Anfrage den Parameter lang hinzufügen, können Sie die Inhalte von Bestellungen in bestimmten Sprachen zurückgeben. Die einzige Bedingung ist, dass die Produkte in die jeweilige Sprache übersetzt sind. Eine Anwendungsmöglichkeit hierfür ist die Anzeige der Bestellungen in der Standardsprache der Website.
Beispiel: Nur die auf Französisch aufgegebenen Bestellungen abrufen.
$orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );
Zugehörige WooCommerce-Dokumentation: Alle Bestellungen auflisten
Einzelne Bestellung anzeigen
Wenn Sie der Anfrage einen Parameter lang übergeben und die Bestellung in einer anderen Sprache aufgegeben wurde, werden alle Positionen (sofern vorhanden) als Übersetzungen in der angegebenen Sprache angezeigt.
Beispiel: Inhalte der Bestellung #110 auf Englisch anzeigen.
$order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );
Zugehörige WooCommerce-Dokumentation: Eine Bestellung abrufen
Produkte abrufen
Indem Sie den Parameter lang hinzufügen, können Sie Produkte in einer bestimmten Sprache abrufen. Um alle Produkte in allen Sprachen abzurufen, muss der Parameter lang auf all gesetzt werden.
Beispiel: Nur die spanischen Produkte abrufen.
$products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );
Zugehörige WooCommerce-Dokumentation: Alle Produkte auflisten
Einzelnes Produkt anzeigen
Die zurückgegebenen Daten enthalten Informationen zu Sprache und Übersetzung. Wenn benutzerdefinierte Preise in Sekundärwährungen festgelegt sind und der Multi-Währungs-Modus sowohl aktiviert als auch konfiguriert ist, werden diese Preise zusätzlich ebenfalls einbezogen.
Beispiel:
$product = $woocommerce->get('products/99');
Ein Ergebnis dieses Beispiels würde in etwa wie folgt aussehen:
Einzelnes Produkt anzeigen
=> stdClass Object
(
[title] => An English product
[id] => 28
[created_at] => 2015-06-08T08:56:49Z
[updated_at] => 2015-06-08T08:56:49Z
[type] => simple
[status] => publish
[downloadable] =>
[virtual] =>
[permalink] => http://example.com/shop/a-simple-english-product
[sku] =>
[price] => 100.00
[regular_price] => 100.00
[sale_price] =>
[price_html] => $100.00
…
[variations] => Array
(
)
[parent] => Array
(
)
[translations] => stdClass Object
(
[bg] => 31
[es] => 30
)
[lang] => en
)Zugehörige WooCommerce-Dokumentation: Ein Produkt abrufen
Produkt-Taxonomie-Begriffe abrufen (Produktkategorien, Schlagwörter, Eigenschaften, Versandklassen)
Indem Sie den Parameter lang hinzufügen, können Sie Produkt-Taxonomie-Begriffe in einer bestimmten Sprache abrufen. Um alle Begriffe in allen Sprachen abzurufen, muss der Parameter lang auf all gesetzt werden.
Beispiel: Kategorien in allen Sprachen abrufen.
$categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );
Zugehörige WooCommerce-Dokumentation: Alle Produktkategorien auflisten
Verkaufsberichte
Indem Sie den Parameter currency hinzufügen, können Sie Berichte in einer bestimmten Währung abrufen.
Verkaufsbericht
$query = [ 'period' => 'year', 'currency' => 'EUR' ]; $woocommerce->get( 'reports/sales', $query );
Zugehörige WooCommerce-Dokumentation: Verkaufsbericht abrufen
Bestseller-Berichte
Indem Sie den Parameter lang hinzufügen, können Sie Berichte in einer bestimmten Sprache abrufen.
Bestseller
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/top_sellers', $query );
Zugehörige WooCommerce-Dokumentation: Bestseller-Bericht abrufen
Berichte zu Produktsummen
Indem Sie den Parameter lang hinzufügen, können Sie Berichte in einer bestimmten Sprache abrufen.
Produktsummen
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/products/totals', $query );
Zugehörige WooCommerce-Dokumentation: Produktsummen abrufen
Produkte erstellen
Beim Erstellen eines Produkts werden drei Parameter unterstützt:
- lang – der entsprechende lang-Wert wird für das Produkt festgelegt. Wenn weggelassen, wird die Standardsprache der Website verwendet.
- translation_of (optional) – das Produkt wird als Übersetzung eines bestehenden Produkts erstellt, das die ID hat, die durch den Wert von translation_of übergeben wird. Wenn translation_of weggelassen wird, wird das Produkt als Teil einer neuen Übersetzungsgruppe (trid) erstellt.
- custom_prices – ermöglicht das Festlegen benutzerdefinierter Preise in Sekundärwährungen.
Beispiel:
Produkte erstellen
$data = [ 'name' => 'English Test Post', 'type' => 'simple', 'regular_price' => '10.00', 'description' => 'This is a Simple English Test Post', 'short_description' => 'This is a Simple English Test Post', 'categories' => [ [ 'id' => 10 ], [ 'id' => 12 ] ], 'images' => [ [ 'src' => 'https://example.com/image-1.png', 'position' => 0 ], [ 'src' => 'https://example.com/image-2.png', 'position' => 1 ] ], 'lang' => 'en', 'custom_prices' => [ 'EUR' => [ 'regular_price' => 1999, 'sale_price' => 1500 ], 'USD' => [ 'regular_price' => 2100, 'sale_price' => 2099 ] ] ]; $product = $woocommerce->post( 'products', $data );
Um ein Produkt als Übersetzung eines anderen Beitrags hinzuzufügen, müssen Sie den Parameter translation_of übergeben. Wenn der Beitrag, der mit dem vorherigen Aufruf erstellt wurde, die ID 23 hat, sähe der Code zum Hinzufügen einer Übersetzung wie folgt aus:
Ein Produkt als Übersetzung eines anderen erstellen
$data = [
'name' => 'French Test Post',
'type' => 'simple',
'regular_price' => '10.00',
'description' => 'This is a Simple French Test Post',
'short_description' => 'This is a Simple French Test Post',
'lang' => 'fr',
'translation_of' => '23'
];
$product = $woocommerce->post('products', $data);Beachten Sie: Wenn die Kategorien bereits übersetzt sind, müssen Sie diese beim Hinzufügen der Übersetzung nicht explizit angeben, sofern in WPML die Option Taxonomie in Übersetzungen kopieren aktiviert ist. Sie werden automatisch hinzugefügt.
Zugehörige WooCommerce-Dokumentation: Ein Produkt erstellen
Variable Produkte
Produktvarianten mit lokaler Eigenschaft erstellen
Beim Erstellen einer Produktvariante werden drei Parameter unterstützt:
- lang – der entsprechende lang-Wert wird für die Produktvariante festgelegt. Wenn weggelassen, wird die Standardsprache der Website verwendet.
- translation_of (optional) – die Produktvariante wird als Übersetzung einer bestehenden Produktvariante erstellt, die die ID hat, die durch den Wert von translation_of übergeben wird. Wenn translation_of weggelassen wird, wird die Produktvariante als Teil einer neuen Übersetzungsgruppe (trid) erstellt.
- custom_prices – ermöglicht das Festlegen benutzerdefinierter Preise in Sekundärwährungen.
Beispiel:
Variante erstellen
$data = [ 'lang' => 'en',
'regular_price' => '10',
'attributes' => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]
];
$woocommerce->post( 'products/{$variable_product_id}/variations', $data );Um eine Produktvariante als Übersetzung eines anderen Beitrags hinzuzufügen, müssen Sie den Parameter translation_of übergeben. Wenn der Beitrag, der mit dem vorherigen Aufruf erstellt wurde, die ID 25 hat, sähe der Code zum Hinzufügen einer Übersetzung wie folgt aus:
Variante übersetzen
$data = [
'name' => 'Translation of Variable Product',
'type' => 'variable',
'description' => 'Translate of Product Description',
'lang' => 'fr',
'translation_of' => 25,
'attributes' => [
[
'name' => $local_attribute_name,
'visible' => true,
'variation' => true,
'options' => [
'$translation_of_red'
]
]
]
];
$woocommerce->post('products', $data);Zugehörige WooCommerce-Dokumentation: Eine Produktvariante erstellen
Produktvarianten mit globaler Eigenschaft erstellen
Zunächst müssen Sie die globalen Begriffe erstellen und übersetzen. Anschließend können Sie das variable Produkt erstellen, indem Sie dem folgenden Beispiel folgen:
Variables Produkt erstellen
$data = [
'name' => 'Test Variable Product',
'type' => 'variable',
'description' => 'Test Variable Product for REST',
'lang' => 'en',
'translation_of' => null,
'attributes' => [
[
'id' => $global_attribute_id,
'visible' => true,
'variation' => true,
'options' => [
'Red'
]
]
]
];
$woocommerce->post('products', $data);Dann müssen wir Produktvarianten erstellen. Wenn das Originalprodukt die ID 25 hat, wäre der folgende Code ein Beispiel:
Produktvarianten erstellen
$data = [ 'create' => [ [ 'lang' => 'en', 'translation_of' => null, 'regular_price' => '10', 'attributes' => [ [ 'id' => $global_attribute_id, 'option' => 'blue-en' //we need to add here the attribute term slug ] ] ] $woocommerce->post( 'products/25/variations/batch', $data );
Nun wurden die variablen Produkte auf Englisch erstellt. Um sie zu übersetzen, folgen Sie dem unten stehenden Beispiel:
Übersetzung eines variablen Produkts erstellen
$data = [
'name' => 'FR Test Variable Product',
'type' => 'variable',
'description' => 'FR Test Variable Product for REST',
'lang' => 'fr',
'translation_of' => 25,
'attributes' => [
[
'id' => $global_attribute_id,
'visible' => true,
'variation' => true,
'options' => [
'red-fr' //slug of the attribute term translation
]
]
]
];
$woocommerce->post('products', $data);Zugehörige WooCommerce-Dokumentation: Produktvarianten im Stapel aktualisieren
Eine Bestellung erstellen
Durch Hinzufügen eines lang-Parameters wird die angegebene Sprache für die angegebene Bestellung festgelegt.
Bitte beachten Sie, dass die Produkte, falls sie in einer anderen als der hier als Argument übergebenen Sprache hinzugefügt werden, nicht automatisch konvertiert, sondern in ihrer jeweiligen Sprache hinzugefügt werden.
Beispiel:
Eine Bestellung erstellen
$data = [
'payment_details' => [
'method_id' => 'bacs',
'method_title' => 'Direct Bank Transfer',
'paid' => true
],
'billing_address' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address_1' => '969 Market',
'address_2' => '',
'city' => 'San Francisco',
'state' => 'CA',
'postcode' => '94103',
'country' => 'US',
'email' => 'john.doe@example.com',
'phone' => '(555) 555-5555'
],
'shipping_address' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address_1' => '969 Market',
'address_2' => '',
'city' => 'San Francisco',
'state' => 'CA',
'postcode' => '94103',
'country' => 'US'
],
'customer_id' => 2,
'line_items' => [
[
'product_id' => 58,
'quantity' => 2
],
],
'shipping_lines' => [
[
'method_id' => 'flat_rate',
'method_title' => 'Flat Rate',
'total' => 10
]
],
'lang' => 'el'
'currency' => 'usd'
];
$order = $woocommerce->post('orders', $data );Zugehörige WooCommerce-Dokumentation: Eine Bestellung erstellen
Taxonomie-Begriffe erstellen (Produktkategorie, Schlagwort, Eigenschaft, Versandklasse)
Beim Erstellen eines Begriffs werden zwei Parameter unterstützt:
- lang – der entsprechende lang-Wert wird für den Begriff festgelegt. Wenn weggelassen, wird die Standardsprache der Website verwendet.
- translation_of (optional) – der Begriff wird als Übersetzung eines bestehenden Begriffs erstellt, der die id hat, die durch den Wert von translation_of übergeben wird. Wenn translation_of weggelassen wird, wird der Begriff als Teil einer neuen Übersetzungsgruppe (trid) erstellt
Beispiel: Eine Kategorie in der zweiten Sprache erstellen.
Kategorie erstellen
$category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ]; $woocommerce->post( 'products/categories', $product_category );
Zugehörige WooCommerce-Dokumentation: Eine Produktkategorie erstellen
Beispiel: Einen globalen Eigenschafts-Begriff in die Sekundärsprache übersetzen
Globalen Eigenschafts-Begriff übersetzen
$attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
$woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );Zugehörige WooCommerce-Dokumentation: Einen Eigenschafts-Begriff erstellen