WPML

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 อื่น ๆ ได้เช่นกัน

การตั้งค่าไลบรารีภายในแอปพลิเคชันของคุณประกอบด้วยขั้นตอนต่อไปนี้:

    1. ดาวน์โหลดไฟล์ไลบรารีไปยังเซิร์ฟเวอร์ไซต์ของคุณโดยใช้คำสั่ง Composer ต่อไปนี้:
composer require automattic/woocommerce
    1. รวมไฟล์ 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',

   ]

);
  • สร้างค่า Consumer Key และ Consumer Secret โดยไปที่ WooCommerceการตั้งค่า แล้วคลิกแท็บ API จากนั้นคลิกแท็บย่อย Keys/Apps แล้วคลิก Add Key ในแบบฟอร์มที่ปรากฏขึ้น ให้ป้อน Description, User และ Permissions ที่คุณต้องการให้สิทธิ์แก่ผู้ใช้ แล้วคลิก Generate API Key
  • เพิ่มค่า Consumer Key และ Consumer Secret ที่สร้างขึ้นลงในโค้ด PHP ของคุณ
  •  'ck_61f94473aab0445da506e095e664f5d65b153f45'; 'cs_7e60f84b6c87554d249b1ad797d6201566c1009e'; 
    1. กำหนดค่าตัวเลือกสำหรับการใช้ไลบรารี คุณสามารถดูคำอธิบายของตัวเลือกทั้งหมดได้ในหน้าอย่างเป็นทางการ

    การใช้ 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

    การสร้างคำของอนุกรมวิธาน (หมวดหมู่ผลิตภัณฑ์ แท็ก แอตทริบิวต์ คลาสการจัดส่ง)

    โปรดทราบว่าคุณสามารถใช้ REST API เพื่อแปลคำของแอตทริบิวต์ (เช่น Blue) ได้ แต่จะไม่สามารถแปลชื่อแอตทริบิวต์ (เช่น Color) ได้ หากต้องการแปลชื่อแอตทริบิวต์ ให้ไปที่ WPML → การแปลอนุกรมวิธาน เลือกแอตทริบิวต์จากเมนูดรอปดาวน์ และเพิ่มคำแปลในส่วน Translations of taxonomy labels and slug

    รองรับพารามิเตอร์ 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

    เขียนโดย Amir · อัปเดตล่าสุด 1 กรกฎาคม 2026