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パラメーターを追加することで、指定した言語で注文のコンテンツを返すことができます。唯一の条件は、商品がそれぞれの言語に翻訳されていることです。これの1つの用途は、サイトのデフォルト言語で注文を表示することです。
例: フランス語で行われた注文のみを取得します。
$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ドキュメント: 商品合計の取得
商品の作成
商品を作成する際には、3つのパラメーターがサポートされています。
- 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ドキュメント: 商品の作成
バリエーション商品
ローカル属性を使用した商品バリエーションの作成
商品バリエーションを作成する際には、3つのパラメーターがサポートされています。
- 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ドキュメント: 注文の作成
タクソノミータームの作成(商品カテゴリー、タグ、属性、配送クラス)
タームを作成する際には、2つのパラメーターがサポートされています。
- 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ドキュメント: 属性タームの作成