WPML Multilingual & Multicurrency for WooCommerce เข้ากันได้กับ WordPress REST API เมื่อใช้ REST API ตอนนี้คุณสามารถสร้าง อ่าน อัปเดต และลบเนื้อหา WooCommerce ที่แปลแล้วได้
เอกสารนี้จัดทำขึ้นสำหรับนักพัฒนาที่ต้องการใช้ประโยชน์จากฟีเจอร์เหล่านี้และนำเสนอประสบการณ์ WooCommerce หลายภาษาในปลั๊กอิน ไซต์ และแอปพลิเคชันของตน
ข้อกำหนด
หากต้องการใช้ REST API กับ WPML Multilingual & Multicurrency for WooCommerce คุณต้องมีสิ่งต่อไปนี้:
- WordPress 4.7+
- WooCommerce 3.9.0+
- WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
- WooCommerce REST PHP client library
- การตั้งค่าลิงก์ถาวรในหน้า การตั้งค่า → ลิงก์ถาวร
การตั้งค่า Client Library
ตามที่กล่าวไว้ คุณต้องมี WooCommerce REST PHP client library ไลบรารีนี้เป็น PHP wrapper ที่ช่วยให้สามารถโต้ตอบกับ WooCommerce REST API ได้อย่างตรงไปตรงมามากขึ้น คุณสามารถใช้ client library อื่น ๆ ได้เช่นกัน
การตั้งค่าไลบรารีภายในแอปพลิเคชันของคุณประกอบด้วยขั้นตอนต่อไปนี้:
-
- ดาวน์โหลดไฟล์ไลบรารีไปยังเซิร์ฟเวอร์ไซต์ของคุณโดยใช้คำสั่ง Composer ต่อไปนี้:
composer require automattic/woocommerce
-
- รวมไฟล์ auto-loading ของไลบรารี autoload.php ไว้ที่จุดเริ่มต้นของโค้ด PHP ของคุณโดยใช้ฟังก์ชัน require
WCML REST API- including autoloading file
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';
- กำหนดค่าตัวเลือกสำหรับการใช้ไลบรารี คุณสามารถดูคำอธิบายของตัวเลือกทั้งหมดได้ในหน้าอย่างเป็นทางการ
การใช้ REST API
เมื่อคุณตั้งค่าไลบรารีในโค้ด PHP ของคุณแล้ว คุณสามารถเริ่มพัฒนาการดำเนินการต่าง ๆ เพื่อให้โค้ดของคุณทำงานได้ รายการต่อไปนี้แสดงการดำเนินการหลักทั้งหมดที่คุณสามารถทำได้โดยใช้ REST API และ WPML Multilingual & Multicurrency for WooCommerce
ดูคำสั่งซื้อ
ด้วยการเพิ่มพารามิเตอร์ lang ลงในคำขอ คุณสามารถส่งคืนเนื้อหาของคำสั่งซื้อในภาษาที่ระบุได้ เงื่อนไขเดียวคือผลิตภัณฑ์ได้รับการแปลเป็นภาษาที่เกี่ยวข้องแล้ว แอปพลิเคชันหนึ่งของสิ่งนี้คือการดูคำสั่งซื้อในภาษาเริ่มต้นของไซต์
ตัวอย่าง: รับเฉพาะคำสั่งซื้อที่ทำในภาษาฝรั่งเศส
$orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: List all orders
ดูคำสั่งซื้อเดียว
ด้วยการระบุพารามิเตอร์ lang ให้กับคำขอ หากมีการทำคำสั่งซื้อในภาษาอื่น รายการทั้งหมด (หากมี) จะแสดงเป็นคำแปลในภาษาที่ระบุ
ตัวอย่าง: ดูเนื้อหาของคำสั่งซื้อ #110 ในภาษาอังกฤษ
$order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Retrieve an order
รับผลิตภัณฑ์
ด้วยการเพิ่มพารามิเตอร์ lang คุณจะสามารถรับผลิตภัณฑ์ในภาษาที่ระบุได้ หากต้องการรับผลิตภัณฑ์ทั้งหมดในทุกภาษา พารามิเตอร์ lang จะต้องตั้งค่าเป็น all
ตัวอย่าง: รับเฉพาะผลิตภัณฑ์ภาษาสเปน
$products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: List all products
ดูผลิตภัณฑ์เดียว
ข้อมูลที่ส่งคืนจะรวมถึงข้อมูลภาษาและการแปล นอกจากนี้ หากมีการตั้งค่าราคาที่กำหนดเองในสกุลเงินรอง และมีการเปิดใช้งานรวมถึงกำหนดค่าโหมดหลายสกุลเงิน ราคาเหล่านั้นจะถูกรวมไว้ด้วย
ตัวอย่าง:
$product = $woocommerce->get('products/99');
ผลลัพธ์ของตัวอย่างนี้จะคล้ายกับสิ่งต่อไปนี้:
View Single Product
=> 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
)เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Retrieve a product
รับคำของอนุกรมวิธานผลิตภัณฑ์ (หมวดหมู่ผลิตภัณฑ์ แท็ก แอตทริบิวต์ คลาสการจัดส่ง)
ด้วยการเพิ่มพารามิเตอร์ lang คุณจะสามารถรับคำของอนุกรมวิธานผลิตภัณฑ์ในภาษาที่ระบุได้ หากต้องการรับคำทั้งหมดในทุกภาษา พารามิเตอร์ lang จะต้องตั้งค่าเป็น all
ตัวอย่าง: รับหมวดหมู่ในทุกภาษา
$categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: List all product categories
รายงานการขาย
ด้วยการเพิ่มพารามิเตอร์ currency คุณจะสามารถรับรายงานในสกุลเงินที่ระบุได้
Sales Report
$query = [ 'period' => 'year', 'currency' => 'EUR' ]; $woocommerce->get( 'reports/sales', $query );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Retrieve sales report
รายงานสินค้าขายดี
ด้วยการเพิ่มพารามิเตอร์ lang คุณจะสามารถรับรายงานในภาษาที่ระบุได้
Top Sellers
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/top_sellers', $query );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Retrieve top sellers report
รายงานผลรวมผลิตภัณฑ์
ด้วยการเพิ่มพารามิเตอร์ lang คุณจะสามารถรับรายงานในภาษาที่ระบุได้
Products Totals
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/products/totals', $query );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Retrieve products totals
สร้างผลิตภัณฑ์
รองรับพารามิเตอร์ 3 ตัวเมื่อสร้างผลิตภัณฑ์:
- lang – ค่า lang ที่เกี่ยวข้องจะถูกตั้งค่าสำหรับผลิตภัณฑ์ หากละเว้น จะใช้ภาษาเริ่มต้นของไซต์
- translation_of (ไม่บังคับ) – ผลิตภัณฑ์จะถูกสร้างขึ้นเป็นคำแปลของผลิตภัณฑ์ที่มีอยู่ โดยมี ID ตามค่าของ translation_of หากละเว้น translation_of ผลิตภัณฑ์จะถูกสร้างขึ้นโดยเป็นส่วนหนึ่งของกลุ่มการแปลใหม่ (trid)
- custom_prices – อนุญาตให้ตั้งค่าราคาที่กำหนดเองในสกุลเงินรอง
ตัวอย่าง:
Create Products
$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 );
หากต้องการเพิ่มผลิตภัณฑ์เป็นคำแปลของโพสต์อื่น คุณต้องส่งพารามิเตอร์ translation_of หากโพสต์ที่สร้างขึ้นด้วยการเรียกก่อนหน้านี้มี ID เป็น 23 โค้ดสำหรับการเพิ่มคำแปลจะเป็นดังนี้:
Creating a product as translation of another one
$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);โปรดทราบว่าหากมีการแปลหมวดหมู่แล้ว คุณไม่จำเป็นต้องระบุหมวดหมู่เหล่านั้นอย่างชัดเจนเมื่อเพิ่มคำแปล หากมีการตั้งค่าตัวเลือก Copy taxonomy to translations ใน WPML หมวดหมู่เหล่านั้นจะถูกเพิ่มโดยอัตโนมัติ
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Create a product
ผลิตภัณฑ์แบบปรับเปลี่ยนได้
สร้างรูปแบบผลิตภัณฑ์ด้วยแอตทริบิวต์เฉพาะที่
รองรับพารามิเตอร์ 3 ตัวเมื่อสร้างรูปแบบผลิตภัณฑ์:
- lang – ค่า lang ที่เกี่ยวข้องจะถูกตั้งค่าสำหรับรูปแบบผลิตภัณฑ์ หากละเว้น จะใช้ภาษาเริ่มต้นของไซต์
- translation_of (ไม่บังคับ) – รูปแบบผลิตภัณฑ์จะถูกสร้างขึ้นเป็นคำแปลของรูปแบบผลิตภัณฑ์ที่มีอยู่ โดยมี ID ตามค่าของ translation_of หากละเว้น translation_of รูปแบบผลิตภัณฑ์จะถูกสร้างขึ้นโดยเป็นส่วนหนึ่งของกลุ่มการแปลใหม่ (trid)
- custom_prices – อนุญาตให้ตั้งค่าราคาที่กำหนดเองในสกุลเงินรอง
ตัวอย่าง:
Create Variation
$data = [ 'lang' => 'en',
'regular_price' => '10',
'attributes' => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]
];
$woocommerce->post( 'products/{$variable_product_id}/variations', $data );หากต้องการเพิ่มรูปแบบผลิตภัณฑ์เป็นคำแปลของโพสต์อื่น คุณต้องส่งพารามิเตอร์ translation_of หากโพสต์ที่สร้างขึ้นด้วยการเรียกก่อนหน้านี้มี ID เป็น 25 โค้ดสำหรับการเพิ่มคำแปลจะเป็นดังนี้:
Translate Variation
$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);เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Create a product variation
สร้างรูปแบบผลิตภัณฑ์ด้วยแอตทริบิวต์ส่วนกลาง
ก่อนอื่น คุณต้องสร้างและแปลคำส่วนกลาง จากนั้น คุณสามารถสร้างผลิตภัณฑ์แบบปรับเปลี่ยนได้โดยทำตามตัวอย่างด้านล่าง:
Create variable product
$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);จากนั้นเราต้องสร้างรูปแบบผลิตภัณฑ์ หากผลิตภัณฑ์ต้นฉบับมี ID เป็น 25 ตัวอย่างโค้ดจะเป็นดังนี้:
Create product variations
$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 );
ตอนนี้ผลิตภัณฑ์แบบปรับเปลี่ยนได้ถูกสร้างขึ้นในภาษาอังกฤษแล้ว หากต้องการแปล ให้ทำตามตัวอย่างด้านล่าง:
Create translation of a variable product
$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);เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Batch update product variations
สร้างคำสั่งซื้อ
การเพิ่มพารามิเตอร์ lang จะเป็นการตั้งค่าภาษาที่ระบุสำหรับคำสั่งซื้อที่ระบุ
โปรดทราบว่าหากมีการเพิ่มผลิตภัณฑ์ในภาษาอื่นที่ไม่ใช่ภาษาที่ระบุเป็นอาร์กิวเมนต์ที่นี่ ผลิตภัณฑ์เหล่านั้นจะไม่ถูกแปลงโดยอัตโนมัติ แต่จะถูกเพิ่มในภาษาของผลิตภัณฑ์นั้นแทน
ตัวอย่าง:
Create an order
$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 );เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Create an order
การสร้างคำของอนุกรมวิธาน (หมวดหมู่ผลิตภัณฑ์ แท็ก แอตทริบิวต์ คลาสการจัดส่ง)
รองรับพารามิเตอร์ 2 ตัวเมื่อสร้างคำ:
- lang – ค่า lang ที่เกี่ยวข้องจะถูกตั้งค่าสำหรับคำ หากละเว้น จะใช้ภาษาเริ่มต้นของไซต์
- translation_of (ไม่บังคับ) – คำจะถูกสร้างขึ้นเป็นคำแปลของคำที่มีอยู่ โดยมี id ตามค่าของ translation_of หากละเว้น translation_of คำจะถูกสร้างขึ้นโดยเป็นส่วนหนึ่งของกลุ่มการแปลใหม่ (trid)
ตัวอย่าง: สร้างหมวดหมู่ในภาษาที่สอง
Create Category
$category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ]; $woocommerce->post( 'products/categories', $product_category );
เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Create a product category
ตัวอย่าง: แปลคำของแอตทริบิวต์ส่วนกลางในภาษารอง
Translate Global Attribute Term
$attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
$woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );เอกสารประกอบของ WooCommerce ที่เกี่ยวข้อง: Create an attribute term