WPML

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 :

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 :

    1. 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
    1. 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',

   ]

);
  • Générez les valeurs Clé client et Secret client. Pour ce faire, accédez à WooCommerceParamètres et cliquez sur l’onglet API. Là, cliquez sur le sous-onglet Clés/Applications et cliquez sur Ajouter une clé. Dans le formulaire qui apparaît, saisissez la Description, l’Utilisateur et les Autorisations que vous souhaitez accorder à l’utilisateur, puis cliquez sur Générer une clé d’API.
  • Ajoutez les valeurs Clé client et Secret client générées à votre code PHP.
  •  'ck_61f94473aab0445da506e095e664f5d65b153f45'; 'cs_7e60f84b6c87554d249b1ad797d6201566c1009e'; 
    1. 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)

    Veuillez noter que vous pouvez utiliser l’API REST pour traduire les termes d’attribut (par exemple, Bleu), mais pas les noms d’attribut (par exemple, Couleur). Pour traduire les noms d’attribut, accédez à WPML → Traduction de taxonomies, choisissez l’attribut dans le menu déroulant et ajoutez des traductions dans la section Traductions des étiquettes de taxonomie et du slug.

    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

    Écrit par Amir · Dernière mise à jour 1 juillet 2026