WPML

WPML Multilingual & Multicurrency for WooCommerce เข้ากันได้กับ WordPress REST API เมื่อใช้ REST API ตอนนี้คุณสามารถสร้าง อ่าน อัปเดต และลบเนื้อหา WooCommerce ที่แปลแล้วได้


เอกสารนี้จัดทำขึ้นสำหรับนักพัฒนาที่ต้องการใช้ประโยชน์จากฟีเจอร์เหล่านี้และนำเสนอประสบการณ์ WooCommerce หลายภาษาในปลั๊กอิน ไซต์ และแอปพลิเคชันของตน

ข้อกำหนด


หากต้องการใช้ REST API กับ WPML Multilingual & Multicurrency for WooCommerce คุณต้องมีสิ่งต่อไปนี้:

การตั้งค่า 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