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 문서: 속성 용어 생성