WPML

WPML Multilingual & Multicurrency for WooCommerce tương thích với WordPress REST API. Bằng cách sử dụng REST API, giờ đây bạn có thể tạo, đọc, cập nhật và xóa nội dung WooCommerce đã dịch.


Tài liệu này dành cho các nhà phát triển muốn tận dụng những tính năng này và cung cấp trải nghiệm WooCommerce đa ngôn ngữ trong các plugin, trang web và ứng dụng của họ.

Yêu cầu


Để sử dụng REST API với WPML Multilingual & Multicurrency for WooCommerce, bạn cần những điều kiện sau:
  • WordPress 4.7+
  • WooCommerce 3.9.0+
  • WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
  • Thư viện máy khách WooCommerce REST PHP
  • Thiết lập đường dẫn tĩnh đẹp trên trang Cài đặtĐường dẫn tĩnh.

Thiết lập thư viện máy khách


Như đã đề cập, bạn cần thư viện máy khách WooCommerce REST PHP. Thư viện này là một trình bao bọc PHP cho phép tương tác với WooCommerce REST API theo cách đơn giản hơn. Bạn cũng có thể sử dụng các thư viện máy khách khác.

Việc thiết lập thư viện bên trong ứng dụng của bạn bao gồm một vài bước:

    1. Tải các tệp thư viện xuống máy chủ trang web của bạn bằng lệnh Composer sau:
composer require automattic/woocommerce
    1. Bao gồm tệp tự động tải của thư viện, autoload.php, ở phần đầu mã PHP của bạn bằng cách sử dụng hàm require.
WCML REST API - bao gồm tệp tự động tải
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',

   ]

);
  • Tạo các giá trị Consumer KeyConsumer Secret. Để thực hiện việc này, hãy truy cập WooCommerceCài đặt và nhấp vào tab API. Tại đó, nhấp vào tab phụ Keys/Apps và nhấp vào Add Key. Trong biểu mẫu xuất hiện, hãy nhập Description, UserPermissions mà bạn muốn cấp cho người dùng, sau đó nhấp vào Generate API Key.
  • Thêm các giá trị Consumer KeyConsumer Secret đã tạo vào mã PHP của bạn.
  •  'ck_61f94473aab0445da506e095e664f5d65b153f45'; 'cs_7e60f84b6c87554d249b1ad797d6201566c1009e'; 
    1. Cấu hình các tùy chọn để sử dụng thư viện. Bạn có thể tìm thấy miêu tả về tất cả các tùy chọn trên trang chính thức.

    Sử dụng REST API


    Bây giờ bạn đã thiết lập thư viện trong mã PHP của mình, bạn có thể bắt đầu phát triển các hành động khác nhau để mã của bạn thực thi. Danh sách sau đây bao gồm tất cả các hành động chính mà bạn có thể thực hiện bằng cách sử dụng REST API và WPML Multilingual & Multicurrency for WooCommerce.

    Xem các đơn hàng


    Bằng cách thêm tham số lang vào yêu cầu, bạn có thể trả về nội dung của các đơn hàng bằng các ngôn ngữ được chỉ định. Điều kiện duy nhất là các sản phẩm phải được dịch sang ngôn ngữ tương ứng. Một ứng dụng của việc này là xem các đơn hàng bằng ngôn ngữ mặc định của trang web.

    Ví dụ: Chỉ lấy các đơn hàng được đặt bằng tiếng Pháp.

    $orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );

    Tài liệu WooCommerce liên quan: Liệt kê tất cả các đơn hàng

    Xem một đơn hàng


    Bằng cách cung cấp tham số lang cho yêu cầu, nếu đơn hàng được đặt bằng một ngôn ngữ khác, tất cả các mặt hàng, nếu có, sẽ được hiển thị dưới dạng bản dịch trong ngôn ngữ được chỉ định.

    Ví dụ: Xem nội dung của đơn hàng #110 bằng tiếng Anh.

    $order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );

    Tài liệu WooCommerce liên quan: Truy xuất một đơn hàng

    Lấy các sản phẩm


    Bằng cách thêm tham số lang, bạn có thể lấy các sản phẩm bằng một ngôn ngữ được chỉ định. Để lấy tất cả sản phẩm bằng tất cả ngôn ngữ, tham số lang phải được đặt thành all.

    Ví dụ: Chỉ lấy các sản phẩm tiếng Tây Ban Nha.

    $products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );

    Tài liệu WooCommerce liên quan: Liệt kê tất cả các sản phẩm

    Xem một sản phẩm


    Dữ liệu trả về sẽ bao gồm thông tin ngôn ngữ và bản dịch. Ngoài ra, nếu giá tùy chỉnh bằng các loại tiền tệ phụ được thiết lập và chế độ đa tiền tệ đã được bật và cấu hình, các mức giá đó cũng sẽ được bao gồm.

    Ví dụ:

    $product = $woocommerce->get('products/99');

    Kết quả của ví dụ này sẽ tương tự như sau:

    Xem một sản phẩm
    => 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
            )

    Tài liệu WooCommerce liên quan: Truy xuất một sản phẩm

    Lấy các thuật ngữ phân loại sản phẩm (Danh mục sản phẩm, Thẻ, Thuộc tính, Lớp giao hàng)


    Bằng cách thêm tham số lang, bạn có thể lấy thuật ngữ phân loại sản phẩm bằng một ngôn ngữ được chỉ định. Để lấy tất cả thuật ngữ bằng tất cả ngôn ngữ, tham số lang phải được đặt thành all.

    Ví dụ: Lấy các danh mục bằng tất cả ngôn ngữ.

    $categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );

    Tài liệu WooCommerce liên quan: Liệt kê tất cả các danh mục sản phẩm

    Báo cáo bán hàng


    Bằng cách thêm tham số currency, bạn có thể lấy các báo cáo bằng một loại tiền tệ được chỉ định.
    Báo cáo bán hàng
    $query = [ 'period' => 'year', 'currency' => 'EUR' ];
    $woocommerce->get( 'reports/sales', $query );

    Tài liệu WooCommerce liên quan: Truy xuất báo cáo bán hàng

    Báo cáo sản phẩm bán chạy nhất


    Bằng cách thêm tham số lang, bạn có thể lấy các báo cáo bằng một ngôn ngữ được chỉ định.
    Sản phẩm bán chạy nhất
    $query = [ 'lang' => 'fr' ];
    $woocommerce->get( 'reports/top_sellers', $query );

    Tài liệu WooCommerce liên quan: Truy xuất báo cáo sản phẩm bán chạy nhất

    Báo cáo tổng số sản phẩm


    Bằng cách thêm tham số lang, bạn có thể lấy các báo cáo bằng một ngôn ngữ được chỉ định.
    Tổng số sản phẩm
    $query = [ 'lang' => 'fr' ];
    $woocommerce->get( 'reports/products/totals', $query );

    Tài liệu WooCommerce liên quan: Truy xuất tổng số sản phẩm

    Tạo các sản phẩm


    Ba tham số được hỗ trợ khi tạo một sản phẩm:
    • lang – giá trị lang tương ứng sẽ được đặt cho sản phẩm. Nếu bỏ qua, ngôn ngữ mặc định của trang web sẽ được sử dụng.
    • translation_of (tùy chọn) – sản phẩm sẽ được tạo dưới dạng bản dịch của một sản phẩm hiện có, mang ID được cung cấp bởi giá trị của translation_of. Nếu bỏ qua translation_of, sản phẩm được tạo như một phần của nhóm bản dịch mới (trid).
    • custom_prices – cho phép cài đặt giá tùy chỉnh bằng các loại tiền tệ phụ.

    Ví dụ:
    Tạo các sản phẩm
    $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 );

    Để thêm một sản phẩm dưới dạng bản dịch của một bài viết khác, bạn cần truyền tham số translation_of. Nếu bài viết được tạo bằng lệnh gọi trước đó có ID là 23, thì sau đây sẽ là mã để thêm một bản dịch:

    Tạo một sản phẩm dưới dạng bản dịch của một sản phẩm khác
    $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);

    Lưu ý rằng nếu các danh mục đã được dịch, bạn không cần chỉ định chúng một cách rõ ràng khi thêm bản dịch nếu tùy chọn Copy taxonomy to translations được thiết lập trong WPML. Chúng sẽ được thêm tự động.

    Tài liệu WooCommerce liên quan: Tạo một sản phẩm

    Sản phẩm có biến thể

    Tạo các biến thể sản phẩm với thuộc tính cục bộ


    Ba tham số được hỗ trợ khi tạo một biến thể sản phẩm:
    • lang – giá trị lang tương ứng sẽ được đặt cho biến thể sản phẩm. Nếu bỏ qua, ngôn ngữ mặc định của trang web sẽ được sử dụng.
    • translation_of (tùy chọn) – biến thể sản phẩm sẽ được tạo dưới dạng bản dịch của một biến thể sản phẩm hiện có, mang ID được cung cấp bởi giá trị của translation_of. Nếu bỏ qua translation_of, biến thể sản phẩm được tạo như một phần của nhóm bản dịch mới (trid).
    • custom_prices – cho phép cài đặt giá tùy chỉnh bằng các loại tiền tệ phụ.

    Ví dụ:
    Tạo biến thể
    $data = [ 'lang'          => 'en',
              'regular_price' => '10',
              'attributes'    => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]
    ];
    $woocommerce->post( 'products/{$variable_product_id}/variations', $data );

    Để thêm một biến thể sản phẩm dưới dạng bản dịch của một bài viết khác, bạn cần truyền tham số translation_of. Nếu bài viết được tạo bằng lệnh gọi trước đó có ID là 25, thì sau đây sẽ là mã để thêm một bản dịch:

    Dịch biến thể
    $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);

    Tài liệu WooCommerce liên quan: Tạo một biến thể sản phẩm

    Tạo các biến thể sản phẩm với thuộc tính toàn cục


    Đầu tiên, bạn cần tạo và dịch các thuật ngữ toàn cục. Sau đó, bạn có thể tạo sản phẩm có biến thể bằng cách làm theo ví dụ dưới đây:
    Tạo sản phẩm có biến thể
    $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);

    Tiếp theo, chúng ta cần tạo các biến thể sản phẩm. Nếu sản phẩm gốc có ID là 25, thì sau đây sẽ là một ví dụ về mã:

    Tạo các biến thể sản phẩm
    $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 );

    Bây giờ các sản phẩm có biến thể đã được tạo bằng tiếng Anh. Để dịch nó, hãy làm theo ví dụ dưới đây:

    Tạo bản dịch của một sản phẩm có biến thể
    $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);

    Tài liệu WooCommerce liên quan: Cập nhật hàng loạt các biến thể sản phẩm

    Tạo một đơn hàng


    Việc thêm tham số lang sẽ đặt ngôn ngữ được chỉ định cho đơn hàng được chỉ định.

    Xin lưu ý rằng các sản phẩm, nếu được thêm bằng một ngôn ngữ khác với ngôn ngữ được cung cấp làm đối số ở đây, sẽ không được chuyển đổi tự động mà thay vào đó sẽ được thêm bằng ngôn ngữ của chúng.

    Ví dụ:

    Tạo một đơn hàng
    $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 );

    Tài liệu WooCommerce liên quan: Tạo một đơn hàng

    Tạo các thuật ngữ phân loại (Danh mục sản phẩm, Thẻ, Thuộc tính, Lớp giao hàng)

    Xin lưu ý rằng bạn có thể sử dụng REST API để dịch các thuật ngữ Thuộc tính (ví dụ: Blue), nhưng không thể dịch tên Thuộc tính (ví dụ: Color). Để dịch tên Thuộc tính, hãy truy cập WPML → Dịch phân loại, chọn thuộc tính từ menu thả xuống và thêm các bản dịch trong phần Translations of taxonomy labels and slug.

    Hai tham số được hỗ trợ khi tạo một thuật ngữ:
    • lang – giá trị lang tương ứng sẽ được đặt cho thuật ngữ. Nếu bỏ qua, ngôn ngữ mặc định của trang web sẽ được sử dụng.
    • translation_of (tùy chọn) – thuật ngữ sẽ được tạo dưới dạng bản dịch của một thuật ngữ hiện có, mang id được cung cấp bởi giá trị của translation_of. Nếu bỏ qua translation_of, thuật ngữ được tạo như một phần của nhóm bản dịch mới (trid)

    Ví dụ: Tạo một danh mục bằng ngôn ngữ thứ hai.
    Tạo danh mục
    $category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ];
    $woocommerce->post( 'products/categories', $product_category );

    Tài liệu WooCommerce liên quan: Tạo một danh mục sản phẩm

    Ví dụ: Dịch một thuật ngữ thuộc tính toàn cục sang ngôn ngữ phụ

    Dịch thuật ngữ thuộc tính toàn cục
    $attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
    $woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );

    Tài liệu WooCommerce liên quan: Tạo một thuật ngữ thuộc tính

    Được viết bởi Amir · Cập nhật lần cuối vào 1 tháng 7 năm 2026