REST API
Többnyelvű WooCommerce-tartalom létrehozása, lekérdezése és módosítása a WordPress REST API-n át.
A bővítmény kompatibilis a WordPress REST API-val. Vele létrehozhatod, lekérdezheted, módosíthatod és törölheted a lefordított WooCommerce-tartalmakat. A fejezet fejlesztőknek szól, akik saját bővítményükben, oldalukon vagy alkalmazásukban kínálnak több nyelvű WooCommerce-élményt.
Követelmények
Szekció neve “Követelmények”- WordPress 4.7 vagy újabb.
- WooCommerce 3.9.0 vagy újabb.
- A bővítmény 4.11.0 vagy újabb változata.
- A WooCommerce REST PHP kliensfüggvénytár (
automattic/woocommerce). - Szép (pretty) állandó hivatkozások a Beállítások → Állandó hivatkozások oldalon.
A kliensfüggvénytár beállítása
Szekció neve “A kliensfüggvénytár beállítása”A kliensfüggvénytár egy PHP-burkoló, amellyel egyszerűbben éred el a WooCommerce REST API-t. Más kliens is használható.
-
Telepítsd a függvénytárat Composerrel:
Terminál composer require automattic/woocommerce -
A PHP-kód elején töltsd be az automatikus betöltőt, és hozd létre a klienst:
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',]); -
Generáld le a Consumer Key és a Consumer Secret értékét: WooCommerce → Beállítások → Haladó → REST API kulcsok, itt kattints a kulcs hozzáadására. Add meg a Leírást, a Felhasználót és a Jogosultságokat, majd kattints az API-kulcs generálása gombra.

Az űrlapon a leírást, a felhasználót és a jogosultságot (olvasás, írás vagy mindkettő) kell megadnod.
-
Írd be a kapott kulcsot és titkot a PHP-kódba (
ck_…éscs_…kezdetű értékek). -
Állítsd be a kliens további beállításait a függvénytár dokumentációja szerint.
Műveletek
Szekció neve “Műveletek”Rendelések lekérdezése
Szekció neve “Rendelések lekérdezése”A lang paraméterrel megadott nyelven kapod vissza a rendelések tartalmát. Feltétel, hogy a termékek le legyenek fordítva az adott nyelvre. Így például a rendeléseket az oldal alapnyelvén is láthatod.
Példa: csak a francia nyelven leadott rendelések.
$orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );Egy rendelés lekérdezése
Szekció neve “Egy rendelés lekérdezése”Ha a lang paramétert megadod, és a rendelés más nyelven készült, a tételek (ha léteznek) a megadott nyelvű fordításukban jelennek meg.
Példa: a 110-es rendelés angolul.
$order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );Termékek lekérdezése
Szekció neve “Termékek lekérdezése”A lang paraméterrel adott nyelvű termékeket kapsz. Az összes nyelv termékéhez a lang értéke all.
Példa: csak a spanyol termékek.
$products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );Egy termék lekérdezése
Szekció neve “Egy termék lekérdezése”A válasz tartalmazza a nyelvi és a fordítási adatokat. Ha a több pénznemes mód be van kapcsolva és be van állítva, és vannak kézi árak a másodlagos pénznemekben, azok is szerepelnek.
$product = $woocommerce->get('products/99');A válasz többek között ilyen mezőket tartalmaz:
[title] => An English product[id] => 28[type] => simple[status] => publish[price] => 100.00[regular_price] => 100.00[translations] => stdClass Object ( [bg] => 31 [es] => 30 )[lang] => enA translations a fordítások nyelvkódját és termékazonosítóját adja, a lang a termék saját nyelve.
Termék-taxonómiák lekérdezése
Szekció neve “Termék-taxonómiák lekérdezése”Ide tartozik a termékkategória, a címke, a jellemző és a szállítási osztály. A lang paraméterrel adott nyelvű elemeket kapsz, az összes nyelvhez használd az all értéket.
Példa: a kategóriák minden nyelven.
$categories = $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );Jelentések
Szekció neve “Jelentések”Az eladási jelentést a currency paraméterrel kérheted adott pénznemben:
$query = [ 'period' => 'year', 'currency' => 'EUR' ];$woocommerce->get( 'reports/sales', $query );A legnépszerűbb termékek és a termékösszesítők jelentése a lang paraméterrel adott nyelven kérhető:
$query = [ 'lang' => 'fr' ];$woocommerce->get( 'reports/top_sellers', $query );$woocommerce->get( 'reports/products/totals', $query );Termék létrehozása
Szekció neve “Termék létrehozása”Három paramétert használhatsz:
| Paraméter | Mit csinál |
|---|---|
lang |
A termék nyelve. Ha kihagyod, az oldal alapnyelve lesz. |
translation_of |
Nem kötelező. A megadott azonosítójú termék fordításaként jön létre. Ha kihagyod, új fordítási csoport (trid) kezdődik. |
custom_prices |
Kézi árak megadása a másodlagos pénznemekben. |
Példa:
$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 );Ha az előző hívással létrejött termék azonosítója 23, a francia fordítást így veheted fel:
$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);Ha a kategóriák már le vannak fordítva, és a WPML-ben be van kapcsolva a taxonómia másolása a fordításokra, a fordításnál nem kell megadnod őket: automatikusan hozzáadódnak.
Változó termékek
Szekció neve “Változó termékek”Változat helyi jellemzővel
Szekció neve “Változat helyi jellemzővel”A változat létrehozásakor ugyanaz a három paraméter használható (lang, translation_of, custom_prices), mint a termékeknél.
$data = [ 'lang' => 'en', 'regular_price' => '10', 'attributes' => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]];$woocommerce->post( 'products/{$variable_product_id}/variations', $data );A fordítás a translation_of megadásával készül. Ha az előző hívással létrejött elem azonosítója 25:
$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);Változat globális jellemzővel
Szekció neve “Változat globális jellemzővel”Előbb hozd létre és fordítsd le a globális jellemző értékeit, utána a változó terméket:
$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);Ezután jönnek a változatok. Ha az eredeti termék azonosítója 25, a batch végpontot használd, és a jellemzőérték slugját add meg:
$data = [ 'create' => [ [ 'lang' => 'en', 'translation_of' => null, 'regular_price' => '10', 'attributes' => [ [ 'id' => $global_attribute_id, 'option' => 'blue-en' // a jellemzőérték slugja ] ] ] ]];$woocommerce->post( 'products/25/variations/batch', $data );A változó termék fordítása:
$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' ] // a lefordított jellemzőérték slugja ] ]];$woocommerce->post('products', $data);Rendelés létrehozása
Szekció neve “Rendelés létrehozása”A lang paraméter a rendelés nyelvét állítja be. Ha a rendelésbe a megadottól eltérő nyelvű termék kerül, az nem alakul át automatikusan: a saját nyelvén kerül a rendelésbe.
$data = [ 'payment_details' => [ 'method_id' => 'bacs', 'method_title' => 'Direct Bank Transfer', 'paid' => true ], 'billing_address' => [ 'first_name' => 'Minta', 'last_name' => 'Vásárló', 'address_1' => 'Minta utca 1.', 'city' => 'Budapest', 'postcode' => '1011', 'country' => 'HU', ], '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 );Taxonómiaelemek létrehozása
Szekció neve “Taxonómiaelemek létrehozása”A REST API-val a jellemzők értékeit (például „Kék”) fordíthatod, a jellemzők nevét (például „Szín”) nem. A jellemzőnevek fordításához nyisd meg a WPML → Taxonómia fordítása oldalt, válaszd ki a jellemzőt a legördülő listából, és a Taxonómia-címkék és bázisok fordításai szakaszban add meg a fordításokat.
Két paraméter használható:
| Paraméter | Mit csinál |
|---|---|
lang |
Az elem nyelve. Ha kihagyod, az oldal alapnyelve lesz. |
translation_of |
Nem kötelező. A megadott azonosítójú elem fordításaként jön létre. Ha kihagyod, új fordítási csoport (trid) kezdődik. |
Példa: kategória létrehozása a második nyelven.
$category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ];$woocommerce->post( 'products/categories', $category );Példa: globális jellemzőérték fordítása a második nyelvre.
$attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];$woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );Készült: