WPML Multilingual & Multicurrency for WooCommerce는 WordPress REST API와 호환됩니다. 이제 REST API를 사용하여 번역된 WooCommerce 콘텐츠를 생성, 읽기, 업데이트 및 삭제할 수 있습니다.
이 문서는 이러한 기능을 활용하여 플러그인, 사이트 및 애플리케이션에서 다국어 WooCommerce 환경을 제공하려는 개발자를 대상으로 합니다.
요구 사항
WPML Multilingual & Multicurrency for WooCommerce와 함께 REST API를 사용하려면 다음이 필요합니다.
- WordPress 4.7+
- WooCommerce 3.9.0+
- WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
- WooCommerce REST PHP 클라이언트 라이브러리 (새 탭에서 열림)
- 설정고유주소 페이지에 설정된 예쁜 고유주소.
클라이언트 라이브러리 설정
앞서 언급했듯이 WooCommerce REST PHP 클라이언트 라이브러리가 필요합니다. 이 라이브러리는 WooCommerce REST API와 더 직관적으로 상호 작용할 수 있게 해주는 PHP 래퍼입니다. 다른 클라이언트 라이브러리도 사용할 수 있습니다.
애플리케이션 내에 라이브러리를 설정하려면 몇 가지 단계가 필요합니다.
-
- 다음 Composer 명령을 사용하여 사이트 서버에 라이브러리 파일을 다운로드합니다.
composer require automattic/woocommerce
-
- require 함수를 사용하여 PHP 코드의 시작 부분에 라이브러리 자동 로드 파일인 autoload.php를 포함합니다.
WCML REST API - 자동 로드 파일 포함
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 문서: 모든 주문 나열 (새 탭에서 열림)
단일 주문 보기
요청에 lang 매개변수를 제공하면, 주문이 다른 언어로 접수된 경우 존재하는 모든 항목이 지정된 언어의 번역으로 표시됩니다.
예시: 110번 주문의 내용을 영어로 보기.
$order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );
관련 WooCommerce 문서: 주문 검색 (새 탭에서 열림)
상품 가져오기
lang 매개변수를 추가하면 지정된 언어로 상품을 가져올 수 있습니다. 모든 언어의 모든 상품을 가져오려면 lang 매개변수를 all로 설정해야 합니다.
예시: 스페인어 상품만 가져오기.
$products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );
관련 WooCommerce 문서: 모든 상품 나열 (새 탭에서 열림)
단일 상품 보기
반환된 데이터에는 언어 및 번역 정보가 포함됩니다. 또한 보조 통화로 사용자 정의 가격이 설정되어 있고 다중 통화 모드가 활성화 및 구성된 경우 해당 가격도 포함됩니다.
예시:
$product = $woocommerce->get('products/99');
이 예시의 결과는 다음과 유사합니다.
단일 상품 보기
=> 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 문서: 상품 검색 (새 탭에서 열림)
상품 택소노미 용어 가져오기(상품 카테고리, 태그, 속성, 배송 클래스)
lang 매개변수를 추가하면 지정된 언어로 상품 택소노미 용어를 가져올 수 있습니다. 모든 언어의 모든 용어를 가져오려면 lang 매개변수를 all로 설정해야 합니다.
예시: 모든 언어의 카테고리 가져오기.
$categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );
관련 WooCommerce 문서: 모든 상품 카테고리 나열 (새 탭에서 열림)
판매 보고서
currency 매개변수를 추가하면 지정된 통화로 보고서를 가져올 수 있습니다.
판매 보고서
$query = [ 'period' => 'year', 'currency' => 'EUR' ]; $woocommerce->get( 'reports/sales', $query );
관련 WooCommerce 문서: 판매 보고서 검색 (새 탭에서 열림)
베스트셀러 보고서
lang 매개변수를 추가하면 지정된 언어로 보고서를 가져올 수 있습니다.
베스트셀러
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/top_sellers', $query );
관련 WooCommerce 문서: 베스트셀러 보고서 검색 (새 탭에서 열림)
상품 합계 보고서
lang 매개변수를 추가하면 지정된 언어로 보고서를 가져올 수 있습니다.
상품 합계
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/products/totals', $query );
관련 WooCommerce 문서: 상품 합계 검색 (새 탭에서 열림)
상품 생성
상품을 생성할 때 세 가지 매개변수가 지원됩니다.
- lang – 상품에 대해 해당 lang 값이 설정됩니다. 생략하면 사이트의 기본 언어가 사용됩니다.
- translation_of(선택 사항) – translation_of 값으로 제공된 ID를 가진 기존 상품의 번역으로 상품이 생성됩니다. translation_of를 생략하면 상품이 새로운 번역 그룹(trid)의 일부로 생성됩니다.
- custom_prices – 보조 통화로 사용자 정의 가격을 설정할 수 있습니다.
예시:
상품 생성
$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인 경우, 번역을 추가하는 코드는 다음과 같습니다.
다른 상품의 번역으로 상품 생성
$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);카테고리가 이미 번역되어 있고 WPML에서 번역에 택소노미 복사 옵션이 설정되어 있는 경우, 번역을 추가할 때 카테고리를 명시적으로 지정할 필요가 없습니다. 카테고리는 자동으로 추가됩니다.
관련 WooCommerce 문서: 상품 생성 (새 탭에서 열림)
옵션 상품
로컬 속성을 사용하여 상품 옵션 생성
상품 옵션을 생성할 때 세 가지 매개변수가 지원됩니다.
- lang – 상품 옵션에 대해 해당 lang 값이 설정됩니다. 생략하면 사이트의 기본 언어가 사용됩니다.
- translation_of(선택 사항) – translation_of 값으로 제공된 ID를 가진 기존 상품 옵션의 번역으로 상품 옵션이 생성됩니다. translation_of를 생략하면 상품 옵션이 새로운 번역 그룹(trid)의 일부로 생성됩니다.
- custom_prices – 보조 통화로 사용자 정의 가격을 설정할 수 있습니다.
예시:
옵션 생성
$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인 경우, 번역을 추가하는 코드는 다음과 같습니다.
옵션 번역
$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 문서: 상품 옵션 생성 (새 탭에서 열림)
글로벌 속성을 사용하여 상품 옵션 생성
먼저 글로벌 용어를 생성하고 번역해야 합니다. 그런 다음 아래 예시에 따라 옵션 상품을 생성할 수 있습니다.
옵션 상품 생성
$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인 경우 코드 예시는 다음과 같습니다.
상품 옵션 생성
$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 );
이제 옵션 상품이 영어로 생성되었습니다. 이를 번역하려면 아래 예시를 따르세요.
옵션 상품의 번역 생성
$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 문서: 상품 옵션 일괄 업데이트 (새 탭에서 열림)
주문 생성
lang 매개변수를 추가하면 지정된 주문에 대해 지정된 언어가 설정됩니다.
여기에 인수로 제공된 언어와 다른 언어로 상품이 추가된 경우 자동으로 변환되지 않고 해당 언어로 추가되므로 유의하세요.
예시:
주문 생성
$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 문서: 주문 생성 (새 탭에서 열림)
택소노미 용어 생성(상품 카테고리, 태그, 속성, 배송 클래스)
용어를 생성할 때 두 가지 매개변수가 지원됩니다.
- lang – 용어에 대해 해당 lang 값이 설정됩니다. 생략하면 사이트의 기본 언어가 사용됩니다.
- translation_of(선택 사항) – translation_of 값으로 제공된 id를 가진 기존 용어의 번역으로 용어가 생성됩니다. translation_of를 생략하면 용어가 새로운 번역 그룹(trid)의 일부로 생성됩니다.
예시: 보조 언어로 카테고리 생성.
카테고리 생성
$category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ]; $woocommerce->post( 'products/categories', $product_category );
관련 WooCommerce 문서: 상품 카테고리 생성 (새 탭에서 열림)
예시: 보조 언어로 글로벌 속성 용어 번역
글로벌 속성 용어 번역
$attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
$woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );관련 WooCommerce 문서: 속성 용어 생성 (새 탭에서 열림)