WPML Multilingual & Multicurrency for WooCommerce est compatible avec l’API REST de WordPress. En utilisant l’API REST, vous pouvez désormais créer, lire, mettre à jour et supprimer du contenu WooCommerce traduit.
Ce document s’adresse aux développeurs qui souhaitent tirer parti de ces fonctionnalités et offrir une expérience WooCommerce multilingue dans leurs extensions, sites et applications.
Exigences
Pour utiliser l’API REST avec WPML Multilingual & Multicurrency for WooCommerce, vous avez besoin des éléments suivants :
- WordPress 4.7+
- WooCommerce 3.9.0+
- WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
- Bibliothèque client PHP REST de WooCommerce
- Permaliens personnalisés configurés sur la page Paramètres → Permaliens.
Configuration de la bibliothèque client
Comme mentionné, vous avez besoin de la bibliothèque client PHP REST de WooCommerce. Cette bibliothèque est un wrapper PHP qui permet d’interagir avec l’API REST de WooCommerce de manière plus directe. Vous pouvez également utiliser d’autres bibliothèques clientes.
La configuration de la bibliothèque dans votre application implique quelques étapes :
-
- Téléchargez les fichiers de la bibliothèque sur le serveur de votre site à l’aide de la commande Composer suivante :
composer require automattic/woocommerce
-
- Incluez le fichier de chargement automatique de la bibliothèque, autoload.php, au début de votre code PHP en utilisant la fonction require.
API REST de WCML - inclusion du fichier de chargement automatique
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';
- Configurez les options d’utilisation de la bibliothèque. Vous pouvez trouver la description de toutes les options sur la page officielle.
Utiliser l’API REST
Maintenant que vous avez configuré la bibliothèque dans votre code PHP, vous pouvez commencer à développer différentes actions que votre code devra exécuter. La liste suivante présente toutes les actions principales que vous pouvez effectuer à l’aide de l’API REST et de WPML Multilingual & Multicurrency for WooCommerce.
Afficher les commandes
En ajoutant le paramètre lang à la requête, vous pouvez renvoyer le contenu des commandes dans des langues spécifiques. La seule condition est que les produits soient traduits dans la langue respective. L’une des applications de cette fonctionnalité est l’affichage des commandes dans la langue par défaut du site.
Exemple : obtenir uniquement les commandes passées en français.
$orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );
Documentation WooCommerce associée : Lister toutes les commandes
Afficher une seule commande
En fournissant un paramètre lang à la requête, si la commande a été passée dans une autre langue, tous les articles, s’ils existent, seront affichés sous forme de traductions dans la langue spécifiée.
Exemple : voir le contenu de la commande #110 en anglais.
$order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );
Documentation WooCommerce associée : Récupérer une commande
Obtenir des produits
En ajoutant le paramètre lang, vous pouvez obtenir des produits dans une langue spécifiée. Pour obtenir tous les produits dans toutes les langues, le paramètre lang doit être défini sur all.
Exemple : obtenir uniquement les produits en espagnol.
$products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );
Documentation WooCommerce associée : Lister tous les produits
Afficher un seul produit
Les données renvoyées incluront des informations sur la langue et la traduction. De plus, si des prix personnalisés dans des devises secondaires sont définis et que le mode multidevise est à la fois activé et configuré, ces prix seront également inclus.
Exemple :
$product = $woocommerce->get('products/99');
Le résultat de cet exemple serait similaire à ce qui suit :
Afficher un seul produit
=> 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
)Documentation WooCommerce associée : Récupérer un produit
Obtenir les termes de taxonomie de produit (catégories de produits, étiquettes, attributs, classes d’expédition)
En ajoutant le paramètre lang, vous pouvez obtenir un terme de taxonomie de produit dans une langue spécifiée. Pour obtenir tous les termes dans toutes les langues, le paramètre lang doit être défini sur all.
Exemple : obtenir les catégories dans toutes les langues.
$categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );
Documentation WooCommerce associée : Lister toutes les catégories de produits
Rapports de ventes
En ajoutant le paramètre currency, vous pouvez obtenir des rapports dans une devise spécifiée.
Rapport de ventes
$query = [ 'period' => 'year', 'currency' => 'EUR' ]; $woocommerce->get( 'reports/sales', $query );
Documentation WooCommerce associée : Récupérer le rapport de ventes
Rapports sur les meilleures ventes
En ajoutant le paramètre lang, vous pouvez obtenir des rapports dans une langue spécifiée.
Meilleures ventes
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/top_sellers', $query );
Documentation WooCommerce associée : Récupérer le rapport sur les meilleures ventes
Rapports sur les totaux des produits
En ajoutant le paramètre lang, vous pouvez obtenir des rapports dans une langue spécifiée.
Totaux des produits
$query = [ 'lang' => 'fr' ]; $woocommerce->get( 'reports/products/totals', $query );
Documentation WooCommerce associée : Récupérer les totaux des produits
Créer des produits
Trois paramètres sont pris en charge lors de la création d’un produit :
- lang – la valeur lang respective sera définie pour le produit. En cas d’omission, la langue par défaut du site sera utilisée.
- translation_of (facultatif) – le produit sera créé en tant que traduction d’un produit existant, ayant l’ID fourni par la valeur de translation_of. Si translation_of est omis, le produit est créé en tant que partie d’un nouveau groupe de traduction (trid).
- custom_prices – permet de définir des prix personnalisés dans des devises secondaires.
Exemple :
Créer des produits
$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 );
Pour ajouter un produit en tant que traduction d’un autre article, vous devez transmettre le paramètre translation_of. Si l’article qui a été créé avec l’appel précédent a un ID de 23, le code suivant serait utilisé pour ajouter une traduction :
Créer un produit en tant que traduction d’un autre
$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);Notez que si les catégories sont déjà traduites, vous n’avez pas besoin de les spécifier explicitement lors de l’ajout de la traduction si l’option Copier la taxonomie dans les traductions est définie dans WPML. Elles seront ajoutées automatiquement.
Documentation WooCommerce associée : Créer un produit
Produits variables
Créer des variations de produit avec un attribut local
Trois paramètres sont pris en charge lors de la création d’une variation de produit :
- lang – la valeur lang respective sera définie pour la variation de produit. En cas d’omission, la langue par défaut du site sera utilisée.
- translation_of (facultatif) – la variation de produit sera créée en tant que traduction d’une variation de produit existante, ayant l’ID fourni par la valeur de translation_of. Si translation_of est omis, la variation de produit est créée en tant que partie d’un nouveau groupe de traduction (trid).
- custom_prices – permet de définir des prix personnalisés dans des devises secondaires.
Exemple :
Créer une variation
$data = [ 'lang' => 'en',
'regular_price' => '10',
'attributes' => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]
];
$woocommerce->post( 'products/{$variable_product_id}/variations', $data );Pour ajouter une variation de produit en tant que traduction d’un autre article, vous devez transmettre le paramètre translation_of. Si l’article qui a été créé avec l’appel précédent a un ID de 25, le code suivant serait utilisé pour ajouter une traduction :
Traduire une 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);Documentation WooCommerce associée : Créer une variation de produit
Créer des variations de produit avec un attribut global
Tout d’abord, vous devez créer et traduire les termes globaux. Ensuite, vous pouvez créer le produit variable en suivant l’exemple ci-dessous :
Créer un produit variable
$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);Ensuite, nous devons créer des variations de produit. Si le produit d’origine a un ID de 25, l’exemple de code suivant serait utilisé :
Créer des variations de produit
$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 );
Maintenant, les produits variables ont été créés en anglais. Pour les traduire, suivez l’exemple ci-dessous :
Créer la traduction d’un produit variable
$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);Documentation WooCommerce associée : Mettre à jour des variations de produit par lots
Créer une commande
L’ajout d’un paramètre lang définira la langue spécifiée pour la commande spécifiée.
Veuillez noter que les produits, s’ils sont ajoutés dans une langue différente de celle fournie comme argument ici, ne seront pas convertis automatiquement, mais seront ajoutés dans leur propre langue.
Exemple :
Créer une commande
$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 );Documentation WooCommerce associée : Créer une commande
Créer des termes de taxonomie (catégorie de produit, étiquette, attribut, classe d’expédition)
Deux paramètres sont pris en charge lors de la création d’un terme :
- lang – la valeur lang respective sera définie pour le terme. En cas d’omission, la langue par défaut du site sera utilisée.
- translation_of (facultatif) – le terme sera créé en tant que traduction d’un terme existant, ayant l’id fourni par la valeur de translation_of. Si translation_of est omis, le terme est créé en tant que partie d’un nouveau groupe de traduction (trid)
Exemple : créer une catégorie dans la langue secondaire.
Créer une catégorie
$category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ]; $woocommerce->post( 'products/categories', $product_category );
Documentation WooCommerce associée : Créer une catégorie de produit
Exemple : traduire un terme d’attribut global dans la langue secondaire
Traduire un terme d’attribut global
$attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
$woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );Documentation WooCommerce associée : Créer un terme d’attribut